从sql查询中查找印地语名称的姓氏(MS SQL)

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
我不知道为什么

Gor*_*off 5

尝试将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)