如何在 SQL(Oracle) 中进行字符串匹配
How to string match in SQL(Oracle)
TABLE_1 有 5 个这样的字符串:'AK___'、'AB_DE'、'AB__E'、'AE__E'、'AF___'
一个下划线代表任意一个字母或数字。
如果给定 'ABZDE'`,
有没有办法在我的 Table_1 中 select 'AB_DE'、'AB__E'?
create table TABLE_1 ( modelname varchar2(10) )
INSERT INTO Table_1 VALUES ('AK___')
INSERT INTO Table_1 VALUES ('AB_DE')
INSERT INTO Table_1 VALUES ('AB__E')
INSERT INTO Table_1 VALUES ('AE__E')
INSERT INTO Table_1 VALUES ('AF___')
SELECT *
FROM Table_1
WHERE modelcode like 'AEZDE' --of course, this select clause doesn't work as I expected.
通配符在 modelcode
列中,因此它需要是 like
运算符的右手参数:
SELECT *
FROM Table_1
WHERE 'AEZDE' like modelname
-- Here ------------^
我认为您滥用了 LIKE 运算符;它需要通配符。我相信您正在寻找的查询结构是:
SELECT *
FROM Table_1
WHERE modelcode like '%AE%DE%'
但我不确定。您的问题和代码之间的字母是否发生变化?
TABLE_1 有 5 个这样的字符串:'AK___'、'AB_DE'、'AB__E'、'AE__E'、'AF___'
一个下划线代表任意一个字母或数字。
如果给定 'ABZDE'`,
有没有办法在我的 Table_1 中 select 'AB_DE'、'AB__E'?
create table TABLE_1 ( modelname varchar2(10) )
INSERT INTO Table_1 VALUES ('AK___')
INSERT INTO Table_1 VALUES ('AB_DE')
INSERT INTO Table_1 VALUES ('AB__E')
INSERT INTO Table_1 VALUES ('AE__E')
INSERT INTO Table_1 VALUES ('AF___')
SELECT *
FROM Table_1
WHERE modelcode like 'AEZDE' --of course, this select clause doesn't work as I expected.
通配符在 modelcode
列中,因此它需要是 like
运算符的右手参数:
SELECT *
FROM Table_1
WHERE 'AEZDE' like modelname
-- Here ------------^
我认为您滥用了 LIKE 运算符;它需要通配符。我相信您正在寻找的查询结构是:
SELECT *
FROM Table_1
WHERE modelcode like '%AE%DE%'
但我不确定。您的问题和代码之间的字母是否发生变化?