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

如何在sql查询中正确使用LIKE语句,sql,sql-server,Sql,Sql Server,我有一个数据库,其中包含一个名为groupid和group name的字段 样本数据 groupid groupname 123 abc 234 bcr 1237 cde 我喜欢将groupid与另一个输入的数据进行比较,它的大小大于groupid的大小 我尝试了一个没有返回正确答案的查询 SELECT * FROM mydata WHERE groupid LIKE '12309098'; 我期望的答案是abc 为获得正确答案

我有一个数据库,其中包含一个名为groupid和group name的字段

样本数据

groupid   groupname
123          abc
234          bcr
1237         cde
我喜欢将groupid与另一个输入的数据进行比较,它的大小大于groupid的大小

我尝试了一个没有返回正确答案的查询

SELECT * 
  FROM mydata
 WHERE groupid LIKE '12309098';
我期望的答案是abc

为获得正确答案,对所做的更改是什么

SELECT * 
  FROM mydata
 WHERE groupid LIKE '12309098';

提前感谢

因为您希望行中的值作为输入的前缀,而不是相反方向,所以您可以像相反方向一样旋转

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

编辑:因为您询问了SQLite,所以需要使用| |进行连接

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

.

由于您希望行中的值作为输入的前缀,而不是相反方向,因此可以像相反方向一样旋转

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

编辑:因为您询问了SQLite,所以需要使用| |进行连接

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

.

您可以像下面这样做:

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

你可以像下面这样做:

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

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

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

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

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

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

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

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

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

你可以用这样的东西。但这对SQL Server来说是非常主观的。对于Oracle,可以使用以下语法

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

你可以用这样的东西。但这对SQL Server来说是非常主观的。对于Oracle,可以使用以下语法

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


您需要在结尾处使用%with like%作为开头,在结尾处使用%at作为结尾,在两端使用contains。like不是一种可以识别模式的神奇语句。它可以查找字符串。LIKE'123%'将返回第一组,但也返回第三组。我认为LIKE在您的情况下不起作用。您需要在结尾处使用%with LIKE%,在开头处使用%with,在结尾处使用%at,在两端使用%at,在两端使用contains。LIKE不是一种可以识别模式的神奇语句。它可以查找字符串。比如“123%”会返回第一组,但也会返回第三组。我不认为“123%”会在你的团队中起作用case@Rex它用于连接字符串。@Rex它在groupID@xdazz但是,它不会让abc和cde都成为result@Rex怎么会?”“12309098”不包含“1237”。我同意约阿希姆·艾萨克森的解决方案。无论如何thanks@Rex它用于连接字符串。@Rex它在groupID@xdazz但是,它不会让abc和cde都成为result@Rex怎么会?”“12309098”不包含“1237”。我同意约阿希姆·艾萨克森的解决方案。无论如何thanks@Rex它将行值123与%连接起来,形成123%,这是一种类似的模式,匹配12309098作为前缀。@JoachimIsaksson,但它不会同时给出abc和cde,结果1237%不会匹配12309098。1230%应该有。@JoachimIsaksson好的,这将GroupID与12309098匹配,谢谢:@Krishna用SQLite语法更新了答案。@Rex它将行值123与%连接起来,形成123%,这是一个相似的模式,匹配12309098作为前缀。@JoachimIsaksson,但它不会给出abc和cde作为结果1237%不会匹配12309098。1230%会有。@JoachimIsaksson明白了,这将GroupID与12309098匹配,谢谢:@Krishna用SQLite语法更新了答案。我同意Joachim Isaksson的解决方案。无论如何,我同意约阿希姆·伊萨克森的解决方案。不管怎样,谢西发现约阿希姆·伊萨克森的解决方案最适合我。不管怎样,谢西发现约阿希姆·伊萨克森的解决方案最适合我。不管怎样,谢谢