Lok*_*ari 0 sql sql-server sql-server-2008
我有eng和devnagri名称的数据库
'PRABHU MATTHU RATHOD | प्रभुमथथूराठोड'
我打破这些名称作为名字,中间名,姓氏英文名称正常工作,但对于印地文名称它显示问题
我试过这个来查找名称中的最后一个空间索引
@MA_Name = ????? ???? ?????
REVERSE(SUBSTRING(REVERSE(@MA_Name), 1,CHARINDEX(' ', REVERSE(@MA_Name)) - 1));
Run Code Online (Sandbox Code Playgroud)
这是失败CHARINDEX(' ', REVERSE(@MA_Name)) - 1)的回归,-1
我不知道为什么
尝试将case语句用于没有空格的例外名称.就像是:
(CASE WHEN @MA_NAME LIKE N'% %'
THEN REVERSE(SUBSTRING(REVERSE(@MA_Name), 1,CHARINDEX(N' ', REVERSE(@MA_Name)) - 1))
ELSE @MA_NAME
END)
Run Code Online (Sandbox Code Playgroud)
这假设没有空格,名称是姓氏.
编辑:
名称可能看起来像是有空格,但空格是除了之外的字符' '.您可以通过以下方式弄清楚它是什么:
select ascii(substring(@MA_NAME, 7, 1))
Run Code Online (Sandbox Code Playgroud)
(或者以适当的空间索引为准.)
一旦知道了字符是什么,就可以将查询结构化为:
(case when @MA_NAME like N'% %' then <what you have now>
when @MA_NAME like N'%OTHERCHAR%' then <similar but with different space>
else <whatever>
end)
Run Code Online (Sandbox Code Playgroud)