查询一个varchar里面的数字

JPF1024 2014-09-11 03:32:56
假设为t列.
t列里面存的是varchar类型数据,如下:
1 1,2,3,4,261
2 261
假如指定1就只查询1,第一列显然是符合的,第二列就不符合了[我只查询1或者2,而因为261包含了这两个数字,所以被"错误"的查出来了]

现在用的sql语句如下:


SELECT jid, tid, name, sales, province
, city, provider, jdaddress, qpaddress, area_flag
, price, level, open_time, contact, sort
, shelves, cover_pic, pics, create_date, push_hpage
, last_date
FROM m
WHERE shelves = 1
AND instr(tid, '1,') > 0
LIMIT 0,4





求一条可以避免这个问题的SQL语句,谢谢
...全文
197 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
JPF1024 2014-09-11
  • 打赏
  • 举报
回复


select * from m where  
find_in_set('2',tid)
-- 2是要查询的字符
-- tid 是要查询的列.

谢谢楼上各位,可以用的。谢谢。
九月茅 2014-09-11
  • 打赏
  • 举报
回复
引用 3 楼 WWWWA 的回复:
find_in_set 就行了
SELECT FIND_IN_SET("261,",'1,'); 学习了一招技巧,。 mysql> SELECT FIND_IN_SET("261,",'1,'); +--------------------------+ | FIND_IN_SET("261,",'1,') | +--------------------------+ | 0 | +--------------------------+ 1 row in set (0.00 sec) mysql>
知道就是你 2014-09-11
  • 打赏
  • 举报
回复
支持使用 find_in_set 用法如下,希望对你有帮助

WWWWA 2014-09-11
  • 打赏
  • 举报
回复
find_in_set 就行了
九月茅 2014-09-11
  • 打赏
  • 举报
回复
AND (INSTR(tid, ',1,') > 0 OR tid LIKE '1,%')
九月茅 2014-09-11
  • 打赏
  • 举报
回复
SELECT jid, tid, NAME, sales, province , city, provider, jdaddress, qpaddress, area_flag , price, LEVEL, open_time, contact, sort , shelves, cover_pic, pics, create_date, push_hpage , last_date FROM m WHERE shelves = 1 AND (INSTR(tid, ',1,') > 0 OR tid LIKE '1,%') LIMIT 0,4;

56,866

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧