Sql-Server
如何確定列中是否存在連字元 (-)
在
CASE
表達式中,我試圖在文本列中搜尋以辨識連字元 (-):CASE WHEN SUBSTRING(al.ALT_ADDRESS,1,1) IN('1','5','7') AND al.NEW_ADDRESS CONTAINS '-' THEN CONCAT(al.ALT_ADDRESS,al.NEW_ADDRESS)
連字元可以位於列中的任何位置,因此我只需要知道它是否存在,而不管它實際上在列中的什麼位置。
我目前正在使用與@Josh 提供的完全相同的程式碼(
LIKE '%-%'
),但它不起作用,因為它不會為我知道它“應該”的幾個特定實例返回正確的數據。確切的文字ALT_ADDRESS
是:“2754 Churchill Circle”。中的確切文本NEW_ADDRESS
是:“O-89421”。但是,返回的結果不包括NEW_ADDRESS
(O-89421)。我已經確認 dash in
NEW_ADDRESS
確實與我正在使用的搜尋 (ASCII 45) 匹配。
現有答案的另一種方法是使用 CHARINDEX() 函式,如果存在則返回指定字元串的位置,否則返回 0。
select charindex('-','kevin-')
將返回 6,因為連字元位於字元串的第六位,與
select charindex('-','kevin')
返回 0,因為字元串中不存在“-”。
根據John Eisbrener 的建議,
PATINDEX
這也是一種選擇,它允許使用萬用字元——這在某些情況下可能會被證明是有益的。