我正在尝试找到一些SQL代码并且它似乎没有返回我想要的输出。
这是我的创建/插入语句
CREATE TABLE temp
([screenName] varchar(130), [realName] varchar(57))
;
INSERT INTO temp
([screenName], [realName])
VALUES
('WillyWonka', 'Will Stinson'),
('Barbara Smith', 'Barbara Smith'),
('JoanOfArc', 'JoanArcadia'),
('LisaD', 'Lisa Diddle')
;
我正在寻找的是realName列中有空格的行...例如前两行和第四行...而realName是空格后的第二个单词以字母开头' S'然后是任何字符,然后是字母i,后跟任何一系列字符。这就是我被困住的地方。
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S%'
虽然我很清楚我在做什么但是错了,但无法弄清楚如何使其正确。
对更改道歉 - 但如果名称要更改并且可能有多个空格(Jimmy Dean Stinson
),我将如何更改代码?如果我想修改它以从右侧看?
谢谢。
答案 0 :(得分:0)
使用LIKE
运算符。
SELECT *
FROM temp
WHERE realName LIKE '% S_i%'
答案 1 :(得分:0)
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where realName like '% S_i%'
答案 2 :(得分:0)
名称的第二个单词,以s
开头,后跟另一个字符,后跟i
后跟任意数量的字符:
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S_i%'
下划线字符_
是任何单个字符的外卡。
您可以找到更多通配符,以便与LIKE
Here
您可以这样做以避免索引错误。这种情况发生在没有空间的价值观上。我将%
添加到类似的字符串中,这将确保名称后面跟一个空格,后跟你的条件。
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where realName like '% S_i%'