在列中寻找空格并不能给出空间的位置?

时间:2016-11-20 17:37:08

标签: sql-server

我正在使用这个SELECT:

select  romaji, CHARINDEX(Romaji,' ',1) from phrase

或此SELECT:

select  romaji, CHARINDEX(RTRIM(Romaji),' ',1) from phrase

并且我在第二列中得到了所有零的输出,即使对于morau的情况,在romaji列中只有一个单词:

ryūgaku             0
tsumaranai          0
aka-i kaban-desu    0
kekkon shite-i-masu 0
morau               0

任何人都可以就我可能做错的事给我一些建议吗?

请注意,romaji被定义为NVARCHAR(MAX)

2 个答案:

答案 0 :(得分:5)

CHARINDEX中,第一个参数应该是需要在字符串中搜索的子字符串。

CHARINDEX

的语法
CHARINDEX ( expressionToFind , expressionToSearch , start_location )   

<强>查询

select romaji, charindex(' ', rtrim(romaji), 1) from phrase;

答案 1 :(得分:2)

如果您只是想知道是否有空格,我建议您改为使用caselike

select romaji, (case when rtrim(Romaji) like '% %' then 1 else 0 end) as HasSpace
from phrase;

当然,你可能真的想要空间的位置,在这种情况下charindex()是正确的选择。