杂项明星在SQL中查找字符

时间:2016-02-24 15:48:05

标签: sql sql-server-2012

我有一个查询,其中返回显示值。返回的这些值中的一些在数值之前具有不期望的撇号,并且一些在数值之前或之后具有奇怪的字符。显示值为varchar且长度不同。这里有一个我正在谈论的特殊角色的例子:

enter image description here

这个角色是什么?如何使用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将其在最终结果集中声明。

2 个答案:

答案 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),' *') - 用星号替换该字符

此外,联系任何填补该领域的人;看看他们认为他们会投入什么以及如何展示它们!