0

我正在尝试查找一些 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),我将如何更改代码如果我想将其修改为从右侧查看?

谢谢你。

4

3 回答 3

0

使用LIKE运算符。

SELECT *
FROM   temp
WHERE  realName LIKE '% S_i%' 
于 2015-03-10T19:36:30.657 回答
0

你想要

 SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
  FROM
  temp
  Where realName like '% S_i%'

通配符单字符

于 2015-03-10T19:38:45.920 回答
0

名称的第二个单词以它开头,s后跟另一个字符,i后跟任意数量的字符:

 SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
  FROM
  temp
  Where LEFT(realName,CHARINDEX(' ',realName)-1) like 'S_i%'

下划线字符_是任何单个字符的通配符。

您可以找到更多用于LIKE 此处的通配符

您可以这样做以避免索引错误。这发生在没有空间的值上。我添加%了类似的字符串,这将确保名称后面有空格,然后是你的条件。

 SELECT LEFT(realName,CHARINDEX(' ',realName)-1)
  FROM
  temp
  Where realName like '% S_i%'
于 2015-03-10T19:39:02.617 回答