首页 > 试题广场 >

有一张Person表包含如下信息: Id Name Addr

[单选题]
有一张Person表包含如下信息:
Id Name Address Career
1 Bob

China Town

Chef
2 Carter

Oxford Street

Teacher
3 Anna

Fourteen Avenue

Dancer

现要选取居住地址Address不以'C'或'O'开头的人员信息,下列MySQL查询语句正确的是:


  • SELECT * FROM Person Address REGEXP '^[^CO]';

  • SELECT * FROM Person Address LIKE '[!CO]%';

  • SELECT * FROM Person Address LIKE '[^CO]%';

  • SELECT * FROM Person Address REGEXP '^[CO]';

此题考的是SQL里的正则表达式查询:
选项 说明 例子 匹配值示例
^ 匹配文本的开始字符 '^b' 匹配以字母 b 开头 的字符串 book、big、banana、 bike
[^] 匹配不在括号中的任何字符 '[^abc]’ 匹配任何不包 含 a、b 或 c 的字符串 desk、fox、f8ke

SELECT * FROM Person Address REGEXP '^[^CO]';
表示筛查出所有匹配[^CO]的项,而[^CO]表示匹配任何不包含C、O的字符串
发表于 2022-01-17 09:28:59 回复(8)

^放在集合外面表示要求以集合中字母开头的单词

^放在集合里面表示否定这个集合,所以^[^CO]就表示不以CO开头的单词

发表于 2022-03-09 11:31:49 回复(3)
B,C 混用了like和正则表达式。故错误。这个题还有第二种写法address not like 'C%' or 'O%'

一 . ‘%’ 他可以替代0或者多个字符,放在不同位置作用不同
F:
1. select id from student where name like ‘李%’’(表示查找所有名字是‘李’开头的
2. select id from student where name like ‘%李%’’(表示查找所有名字中间有‘李’的)
3. select id from student where name like ‘%李’’(表示查找所有名字末尾有‘李’的)
二.’_ ‘ 他是替代任意单个字符,放在不同位置作用不同,用法与’%’类似,这里就不赘述了

三. ‘[ ] ‘ ,里面放任意字符列,数量不限,表示满足括号内任意字符

注意:和上面两个不同的是这个通配符不再是与LIKE 一起使用了,他是正则里面的内容,所有用法稍有不同,他的前面要加上 regexp 关键字
F: select id from student where name regexp ‘[ 李王]’
表示查找所有名字中出现‘李’,或者‘王’的任意学生id

四. ‘ [! ] ‘(也可以写成[^ ])里面放任意字符列,数量不限,表示满足除了括号内任意字符,这与上面一个相反,但是用法相似,这里不赘述了



发表于 2022-03-09 11:18:17 回复(1)
^在数组中表示不等于
发表于 2021-12-28 14:38:18 回复(2)
答案怎么都缺了where

发表于 2023-10-06 16:41:59 回复(0)
A选项感觉结果错了一部分
编辑于 2024-02-23 22:47:38 回复(0)
B和C错误的原因是混用了like和正则表达式
如B选项,LIKE '[!CO]%' ,LIKE不支持正则表达式中的 ![] 写法,此处表示选出 Address以 '[!CO]'字符串开头的记录,故不符合;
C选项会选出 Address以 '[^CO]' 开头的记录,也不符合
发表于 2022-11-09 17:18:41 回复(0)
复习了一下正则表达:
^匹配输入字符串的开始位置。举例'^z',可以匹配到zack。
[^...]匹配未包含的任意字符。举例'[^abc]',可以配到y。

发表于 2022-09-15 01:42:38 回复(0)
[^CO]表示筛查出所有匹配不在括号中的任何字符,即CO的项,而^[^CO]表示匹配匹配文本的开始字符,即匹配任意不包含C、O的字符串
发表于 2022-07-16 16:22:16 回复(0)