通常,在使用SELECT查询数据库时,通常需要查找与给定搜索字符串匹配的记录。
例如:
SELECT * FROM customers WHERE name LIKE '%Bob Smith%';
该查询应该为我提供所有记录,其中'Bob Smith'出现在名称字段的任何位置。
我想做的恰恰相反。
我想找到姓名字段在“Robert Bob Smith III,PhD。”中的所有记录,而不是查找在名称字段中包含“Bob Smith”的所有记录,这是查询的字符串参数。
答案 0 :(得分:39)
只需转动LIKE
SELECT * FROM customers
WHERE 'Robert Bob Smith III, PhD.' LIKE CONCAT('%',name,'%')
答案 1 :(得分:10)
你可以使用这样的正则表达式:
SELECT * FROM pet WHERE name REGEXP 'Bob|Smith';
答案 2 :(得分:1)
您也可以使用
SELECT * FROM customers WHERE name LIKE "%Bob Smith%";
注意双引号
答案 3 :(得分:-1)
在上面的查询中如果我们使用某些特殊字符进行搜索,例如:'__'或'()',而不是检索所有数据,
SQL> select * from test_brck其中NVL(UPPER(v_name),1)LIKE nvl(UPPER('%'||& v_name ||'%'),NVL(UPPER(v_name),1));
输入v_name的值:'_'
旧2:其中NVL(UPPER(v_name),1)LIKE nvl(UPPER('%'||& v_name ||'%'),NVL(UPPER(v_name),1))
新2:其中NVL(UPPER(v_name),1)LIKE nvl(UPPER('%'||'_'||'%'),NVL(UPPER(v_name),1))
Ramu(去了gbl)
Ramj
Ramu_Karan(去了blr)
Sidd_Karan
ABC%^
XY123
ABC
选择了7行。
<强>输出:强>
Ramu_Karan(去了blr)
Sidd_Karan
答案 4 :(得分:-3)
不正确:
SELECT * FROM customers WHERE name LIKE '%Bob Smith%';
相反:
select count(*)
from rearp.customers c
where c.name LIKE '%Bob smith.8%';
select count
只会查询(总计)
C
会将db.table链接到您需要索引的名称行
LIKE
应该是obvs
8
将调用DB 8或更少的所有引用(不是真的需要,但我喜欢整洁)