如何在sql查询中正确使用LIKE语句

时间:2014-03-13 06:18:25

标签: sql sql-server

我的数据库包含一个名为groupid和group name的字段。

示例数据

groupid   groupname
123          abc
234          bcr
1237         cde

我喜欢将groupid与其他输入数据进行比较,其大小大于组ID的大小。

我尝试了一个不能返回正确答案的查询

SELECT * 
  FROM mydata
 WHERE groupid LIKE '12309098';

我的预期答案是abc

对正确答案进行了哪些更改

提前致谢

4 个答案:

答案 0 :(得分:8)

由于您希望行中的值是输入的前缀而不是相反,您只需转向LIKE即可;

SELECT * 
FROM mydata
WHERE '12309098' LIKE CONCAT(groupid, '%');

An SQLfiddle to test with;

编辑:既然您询问了SQLite,那么您需要使用||进行连接;

SELECT * 
FROM mydata 
WHERE '12309098' LIKE `groupid` || '%';

Another SQLfiddle

答案 1 :(得分:6)

你可以这样做:

SELECT * 
FROM my data
WHERE '12309098' LIKE CONCAT('%', groupid, '%');

答案 2 :(得分:1)

你可以使用这样的东西。但它对您的SQL Server非常主观。对于Oracle,下面的语法应该没问题

SELECT * 
  FROM mydata
 WHERE groupid LIKE SUBSTR('12309098',1, LENGTH(groupid));

答案 3 :(得分:0)

如果您确定输入数据将以123开头,那么:

SELECT * FROM mydata WHERE groupid LIKE '123%';

如果您确定输入数据将包含123,则:

SELECT * FROM mydata WHERE groupid LIKE '%123%';