SQL Server中TRANSLATE函数能否使用十六进制代码替换字符?
SQL Server TRANSLATE函数处理十六进制字符替换问题
可以用TRANSLATE实现十六进制字符替换为空格,但你的写法有误导致报错。
错误原因
你传入的'\x80'在SQL Server中会被解析为4个普通字符(\、x、8、0),而第三个参数是单个空格,两者长度不匹配,触发TRANSLATE的参数校验规则,报错信息翻译为:
消息 9828,级别 16,状态 1
内置函数TRANSLATE的第二个和第三个参数必须包含相同数量的字符
正确写法
在SQL Server中,需通过CHAR()函数将十六进制值转换为对应字符,才能作为TRANSLATE的参数使用。替换十六进制0x80为空格的正确语句如下:
SELECT TRANSLATE('目标字符串', CHAR(0x80), ' ')
如果需要替换多个十六进制字符,只需在第二个参数中用+拼接多个CHAR(),同时第三个参数保持相同长度的替换字符即可,示例:
SELECT TRANSLATE('多字符测试', CHAR(0x80) + CHAR(0x81), ' ')
内容的提问来源于stack exchange,提问作者Ludovic Aubert
相关产品推荐
相关产品推荐

