在 SQL 字符串中寻找特定的子字符串
Looking for a particular substring in SQL string
我试图找到一些 SQL 代码,但似乎没有返回我想要的输出。
这是我的create/insert声明
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 列中有 space 的行...例如前两行和第四行...以及 realName 后的第二个字space 以字母 'S' 开头,后跟任意字符,然后是字母 i,后跟任意字符系列。这就是我被困的地方。
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S%'
虽然我很确定我在做什么是错的,但我不知道如何改正。
对更改表示歉意——但是如果名称要更改并且可能有多个 space (Jimmy Dean Stinson
),我将如何更改代码如果我想修改它以从正确的?
谢谢。
使用 LIKE
运算符。
SELECT *
FROM temp
WHERE realName LIKE '% S_i%'
你要吗
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where realName like '% S_i%'
以 s
开头的名称的第二个单词,后跟另一个字符,后跟 i
,后跟任意数量的字符:
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S_i%'
下划线字符 _
是任何单个字符的通配符。
您可以找到更多用于 LIKE
Here
的通配符
您可以这样做以避免索引错误。这发生在没有 space 的值上。我将 %
添加到类似的字符串中,这将确保名称后跟 space,然后是您的条件。
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where realName like '% S_i%'
我试图找到一些 SQL 代码,但似乎没有返回我想要的输出。
这是我的create/insert声明
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 列中有 space 的行...例如前两行和第四行...以及 realName 后的第二个字space 以字母 'S' 开头,后跟任意字符,然后是字母 i,后跟任意字符系列。这就是我被困的地方。
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S%'
虽然我很确定我在做什么是错的,但我不知道如何改正。
对更改表示歉意——但是如果名称要更改并且可能有多个 space (Jimmy Dean Stinson
),我将如何更改代码如果我想修改它以从正确的?
谢谢。
使用 LIKE
运算符。
SELECT *
FROM temp
WHERE realName LIKE '% S_i%'
你要吗
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where realName like '% S_i%'
以 s
开头的名称的第二个单词,后跟另一个字符,后跟 i
,后跟任意数量的字符:
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S_i%'
下划线字符 _
是任何单个字符的通配符。
您可以找到更多用于 LIKE
Here
您可以这样做以避免索引错误。这发生在没有 space 的值上。我将 %
添加到类似的字符串中,这将确保名称后跟 space,然后是您的条件。
SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
FROM
temp
Where realName like '% S_i%'