我有一个查询,其中返回显示值。返回的这些值中的一些在数值之前具有不期望的撇号,并且一些在数值之前或之后具有奇怪的字符。显示值为varchar
且长度不同。这里有一个我正在谈论的特殊角色的例子:
这个角色是什么?如何使用replace()
功能将其剥离?
我尝试了以下内容并获得了以下结果:
substring(b.dsply_val, 5, 1)
提供有问题的角色
UNICODE(SUBSTRING(b.dsply_val, 5, 1))
给出结果164
更新
我正在考虑做这样的事情,因为结果被插入到变量临时表中:
, CASE WHEN unicode(substring(b.dsply_val, 1, 1)) = 164 THEN 1 ELSE 0 END AS POS_1
, CASE WHEN unicode(substring(b.dsply_val, 2, 1)) = 164 THEN 1 ELSE 0 END AS POS_2
, CASE WHEN unicode(substring(b.dsply_val, 3, 1)) = 164 THEN 1 ELSE 0 END AS POS_3
, CASE WHEN unicode(substring(b.dsply_val, 4, 1)) = 164 THEN 1 ELSE 0 END AS POS_4
, CASE WHEN unicode(substring(b.dsply_val, 5, 1)) = 164 THEN 1 ELSE 0 END AS POS_5
因此,如果POS_1 = 1,则where
将其在最终结果集中声明。
答案 0 :(得分:1)
我不确定这会有所帮助,但您可以获取该角色的unicode代码然后替换它。
-- Test variable
DECLARE @test VARCHAR(10) = '12345¶'
-- Get the code
SELECT UNICODE(SUBSTRING(@test, 6, 1))
-- Replace
SELECT REPLACE(@test, CHAR(182), 'Z')
答案 1 :(得分:1)
在字符串中的每个字符中使用ASCII(),然后使用结果更新问题,以便我们可以看到模式。
使用CHAR()函数中ASCII返回的值进行替换,即
ASCII(坏字符)返回x REPLACE(string,CHAR(x),'') - 用空格替换该字符
或
REPLACE(string,CHAR(x),' *') - 用星号替换该字符
此外,联系任何填补该领域的人;看看他们认为他们会投入什么以及如何展示它们!