2016-11-20 52 views
-2

我使用這個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 

任何人都可以給我一些建議,我可能會做錯什麼?

注意,羅馬字被定義爲NVARCHAR(MAX)

+3

您的參數是錯誤的,應該是charindex('',Romaji) –

+0

請參閱https://msdn.microsoft.com/en-us/library/ms186323.aspx – Marusyk

回答

5

CHARINDEX,第一參數應該是一個需要在字符串中搜索的子字符串。

CHARINDEX

CHARINDEX (expressionToFind , expressionToSearch , start_location) 

查詢語法

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

如果你只是想知道,如果有一個空間,我會建議你使用caselike改爲:

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

當然,你可能真的想要空間的位置,在這種情況下charindex()是正確的選擇。