SQL通配符问题

6 sql wildcard

对不起,我是新手使用数据库 - 我正在尝试执行一个查询,它将获得与SQL中的字符串类似的所有字符.

例如,

如果我正在寻找以某个字符串开头的所有用户,例如S*或Sm*会返回"Smith,Smelly,Smiles等......"

我是否在正确的轨道上?

任何帮助将不胜感激,并提前致谢!

Rio*_*ams 6

LIKE运算符是你正在寻找什么,所以你的例子中,你需要这样的:

SELECT * 
  FROM [Users]
 WHERE LastName LIKE 'S%'
Run Code Online (Sandbox Code Playgroud)

'%'字符是SQL中的通配符.


小智 6

Sql不能这样做...将百分比符号放在中间.

SELECT * FROM users WHERE last_name LIKE 'S%th' 
Run Code Online (Sandbox Code Playgroud)

你需要写一个where子句和一个和子句.

 SELECT * FROM users WHERE last_name LIKE 'S%' and last_name LIKE '%th' 
Run Code Online (Sandbox Code Playgroud)

  • MSSQL(使用版本 2019 进行测试)可以在字符串中间查找通配符。所以 'S%th' 将匹配 'Smith'。 (2认同)

Nic*_*rey 5

标准 (ANSI) SQL 有两个通配符与 LIKE 关键字一起使用:

  • _(下划线)。匹配任何单个字符的一次出现。
  • %(百分号)。匹配任意单个字符零次或多次出现。

此外,SQL Server 扩展了 LIKE 通配符匹配以包含字符集规范,就像普通的正则表达式字符集说明符一样:

  • [character-set]匹配指定集中的单个字符
  • [^character-set]匹配不在指定集中的单个字符。

字符集也可以以正常方式指定为范围:

  • [0-9] 匹配任何十进制数字。
  • [AZ] 匹配任何大写字母
  • [^A-Z0-9-] 匹配除字母、数字或连字符之外的任何字符。

当然,字母匹配的语义取决于所使用的排序规则序列。它可能区分大小写,也可能不区分大小写。

此外,要匹配文字左方括号 ('[]'),必须使用字符范围说明符。您不会收到语法错误,但也不会收到匹配项。

where x.field like 'x[[][0-9]]'
Run Code Online (Sandbox Code Playgroud)

将匹配看起来像 'x[0]' 、 'x[8]' 等的文本。但是

where 'abc[x' like 'abc[x'
Run Code Online (Sandbox Code Playgroud)

永远是假的。