如果字段logistics_trajectory中包含“签收”,则查询出所有表logistics_trajectory中字段tracking_number
时间: 2024-03-24 10:36:43 浏览: 65
可以使用以下SQL语句查询:
```
SELECT tracking_number
FROM logistics_trajectory
WHERE logistics_trajectory LIKE '%签收%'
```
这个查询会在logistics_trajectory表中查找包含"签收"的物流信息,然后返回它们的tracking_number。使用LIKE运算符可以模糊匹配包含"签收"的字符串,%表示匹配任意字符,因此'%签收%'会匹配任何包含"签收"的字符串。
相关问题
如果字段logistics_trajectory中包含“签收”,则查询出所有表logistics_trajectory中字段tracking_number,不想用like来实现,想让SQL变得优雅一点
如果不想使用LIKE来实现模糊匹配,可以考虑使用正则表达式来实现。在MySQL中,可以使用REGEXP或RLIKE关键字来执行正则表达式匹配。以下是一个使用RLIKE的例子:
```
SELECT tracking_number
FROM logistics_trajectory
WHERE logistics_trajectory RLIKE '\\b签收\\b'
```
这个查询会在logistics_trajectory表中查找包含"签收"的物流信息,然后返回它们的tracking_number。使用RLIKE关键字可以执行正则表达式匹配,'\\b签收\\b'表示匹配包含单词"签收"的字符串,其中'\\b'表示单词边界。这个查询比使用LIKE更加优雅和精准。
SELECT tracking_number FROM logistics_trajectory WHERE state = '1' AND INSTR(logistics_trajectory, '签收') < 0为什么如果字段logistics_trajectory为空的话,查不出来
如果字段logistics_trajectory为空,那么它的值为NULL。在SQL中,NULL不等于任何值,因此当logistics_trajectory为NULL时,INSTR(logistics_trajectory, '签收')的结果也是NULL。在这种情况下,查询条件变为state = '1' AND NULL < 0,这会导致无法查出任何结果。要解决这个问题,可以使用COALESCE函数或者IFNULL函数将NULL转换为一个非NULL的值,例如将NULL转换为空字符串'',这样就可以正确地执行查询了。例如:
SELECT tracking_number FROM logistics_trajectory WHERE state = '1' AND COALESCE(INSTR(logistics_trajectory, '签收'), 0) < 0;
或者:
SELECT tracking_number FROM logistics_trajectory WHERE state = '1' AND IFNULL(INSTR(logistics_trajectory, '签收'), 0) < 0;
阅读全文