Sql server 我的SQL语句(差分函数)有什么问题
有人能解释一下为什么这里会有不同的差值:Sql server 我的SQL语句(差分函数)有什么问题,sql-server,Sql Server,有人能解释一下为什么这里会有不同的差值: select RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename'))) 此语句为我提供了值examplename select DIFFERENCE('examplename', 'examplename') 这里的区别应该是4 select DIFFERENCE('examplename', RIGHT('name examplename', CHARINDEX(
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,为什么?右边的'name examplename',CHARINDEX',反面的'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)
右边是“name examplename”,右边是“CHARINDEX”,反面是“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)
其中一个上有一个前导空格 如果查看返回的SOUNDEX值
select SOUNDEX('examplename'),
SOUNDEX(' examplename')
他们完全不同。带前导空格的返回全零
我从来没有发现SOUNDEX或DIFFERENCE对任何个人都有用。其中一个上面有一个前导空格 如果查看返回的SOUNDEX值
select SOUNDEX('examplename'),
SOUNDEX(' examplename')
他们完全不同。带前导空格的返回全零
我从未发现SOUNDEX或DIFFERENCE对任何个人有用。您还必须从字符串中删除空格字符。 从第一个查询开始,它给出带有空格的结果 使用下面的查询,它们会给出相同的结果
select RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')) - 1)
select DIFFERENCE('examplename', 'examplename')
select DIFFERENCE('examplename', RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')) - 1) )
还必须从字符串中删除空格字符。 从第一个查询开始,它给出带有空格的结果 使用下面的查询,它们会给出相同的结果
select RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')) - 1)
select DIFFERENCE('examplename', 'examplename')
select DIFFERENCE('examplename', RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename')) - 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'))), ' ',''))
请使用此查询解决您的问题
select REPLACE (RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename'))), ' ','')
select DIFFERENCE('examplename', 'examplename')
select DIFFERENCE('examplename', REPLACE (RIGHT('name examplename', CHARINDEX(' ', REVERSE('name examplename'))), ' ',''))
选择差异'examplename','examplename'选择差异'examplename','examplename'谢谢大家!关于这一差异陈述的另一个问题。如果有一些字符串值没有空格,那么我得到的错误无效长度参数传递给了正确的函数,如何摆脱它?例如,如果只有examplename或name而没有examplename。我想我需要这样的东西:如果charindex值不是null/0,那么-1?已经修改了我的答案@Ziilthanks,现在它更清晰了,差分声明也可以工作了,因为它应该感谢大家!关于这一差异陈述的另一个问题。如果有一些字符串值没有空格,那么我得到的错误无效长度参数传递给了正确的函数,如何摆脱它?例如,如果只有examplename或name而没有examplename。我想我需要这样的东西:如果charindex值不是null/0,那么-1?已经修改了我的答案@Ziilthanks,现在它更清晰了,差分语句可以正常工作。这对于删除空格字符很好。但当我尝试执行smt时,会收到错误消息。类似于:选择差异'examplename',右键'name examplename',CHARINDEX',反转'examplename'-1我有一些没有空格的字符串值,那么-1不是Nessers从您自己的查询中替换空字符串。请参阅答案中提供的查询。这可以很好地删除空格字符。但当我尝试执行smt时,会收到错误消息。类似于:选择差异'examplename',右键'name examplename',CHARINDEX',反转'examplename'-1我有一些没有空格的字符串值,那么-1不是Nessers从您自己的查询中替换空字符串。请参阅答案中提供的查询。