有人可以解释一下为什么我在这里得到不同的DIFFERENCE值:
select RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')))
这句话给了我“examplename”的价值
select DIFFERENCE('examplename', 'examplename')
这里的差异是4,因为它应该
select DIFFERENCE('examplename', RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename'))))
但是这个判断给了我差值0,为什么?
答案 0 :(得分:2)
你有一个领先的空间。
如果查看返回的SOUNDEX
值
select SOUNDEX('examplename'),
SOUNDEX(' examplename')
他们完全不同。具有前导空格的那个返回全零。
我从未发现SOUNDEX或DIFFERENCE对个人有用。
答案 1 :(得分:1)
RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')))
给你了
" examplename"
不是"examplename"
。这些SOUNDEX
值完全不同。
为了避免您需要的问题:
select DIFFERENCE('examplename', CASE WHEN CHARINDEX(' ', @your_string) = 0 THEN @your_string ELSE RIGHT(@your_string, CHARINDEX(' ', REVERSE(@your_string)) - 1) END)
答案 2 :(得分:1)
请使用此查询解决您的问题。
select REPLACE (RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename'))), ' ','')
select DIFFERENCE('examplename', 'examplename')
select DIFFERENCE('examplename', REPLACE (RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename'))), ' ',''))
答案 3 :(得分:0)
您还必须从字符串中删除空格字符。 从第一个查询中,它给出了带空格的结果。
使用以下查询,他们会给出相同的结果。
select RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')) - 1)
select DIFFERENCE('examplename', 'examplename')
select DIFFERENCE('examplename', RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')) - 1) )