简单的sql查询,纠结...

美人心计1999 2010-07-13 11:52:13
如下,表a有个字段content
值为:
0=商店名字1|某街道xx号|021-3333333
1=商店名字2|某街道xx号|021-3222222
2=商店名字3|某街道xx号|021-5555555
3=商店名字4|某街道xx号|021-5666665
........
意思就是名字|地址|电话这种格式
想要按照商店的名字进行模糊查询....
问题是商店名字不是单独存储在一个字段里,而是和改商店地址,电话存储在一起....
要查的话需要从content里面把名字取出来,但是一个字段里面可能有一个商店,也可能有多个商店,所以就考虑是不是要用循环啊,但是循环也没用过,不知道如何用.....谁知道,说下....
该如何查呢....纠结人....
...全文
169 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwn1902 2010-07-16
  • 打赏
  • 举报
回复
表结构的设计也太牛叉了吧,第一次看到这样设计的.如果为了以后的方便最好现在就改表结构,
我想到的笨方法:select * from table where content like '%商店名字%'这样查询个大概,
然后再在程序里面去遍历数组判断...
life169 2010-07-16
  • 打赏
  • 举报
回复
select * from table where content REGEXP '^|{$xxx}|$'
这个是对的
life169 2010-07-16
  • 打赏
  • 举报
回复
大概应该是这样:
select * from table where content REGEXP '^[|{$xxx}|]$'
{$xxx} 这个是你的查询变量

这个正则的意思是模糊匹配 第一个“|”到第二个“|”之间的内容与查询变量进行匹配。
我也不知道这个正则写的对不对,大体是这个意思,你再去搜搜。
life169 2010-07-16
  • 打赏
  • 举报
回复
sql查询语句里加正则表达式可以解决
例如:

select * from table where content REGEXP '。。。'

具体的正则我不会写,你可以上网搜索一下。
nkym0626 2010-07-14
  • 打赏
  • 举报
回复
用LIKE语句
amani11 2010-07-14
  • 打赏
  • 举报
回复
建议拆字段吧,数据库设计不合理
gumwzg 2010-07-14
  • 打赏
  • 举报
回复

在mysql里写个方法吧

你的记录里 所有等号后面都是商店名字

在方法里查找
Abin-2008 2010-07-14
  • 打赏
  • 举报
回复
表设计的有点难度...
如果数据量不大
办法就是取出全部的content
然后再根据"|" 拆分成数组...
然后再来对比...
helloyou0 2010-07-14
  • 打赏
  • 举报
回复
如果以后还要和这个表打交道,还不如改结构呢 ......
zhang6464 2010-07-14
  • 打赏
  • 举报
回复
这样行吗
slect * from A where content like "%=商店名字|%"

[Quote=引用 7 楼 miaojihao 的回复:]
引用 5 楼 zhaoyu0826 的回复:

你那个字段里边,有0=这个东西吗。还是就是“名字|地址|电话这种格式”
要是有0=得想想,要是没有。可以用以下sql

SQL code
select * from A where '|' + content like '%|商店名字|%'


表a
[/Quote]
美人心计1999 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhang6464 的回复:]
我不太懂你意思哎,你table是content吧?那没有属性名?比如商店名字是shop_name之类的?
引用 3 楼 miaojihao 的回复:
引用 2 楼 cunningboy 的回复:

SQL code
select * from table where content like '%商店名字%'

这里的content代表某个一个城市所有的商店的记录
content实……
[/Quote]
问题就在这里...商店的属性并没有单独的字段,都是按照格式存在content的字段里面
zhang6464 2010-07-14
  • 打赏
  • 举报
回复

我不太懂你意思哎,你table是content吧?那没有属性名?比如商店名字是shop_name之类的?
[Quote=引用 3 楼 miaojihao 的回复:]
引用 2 楼 cunningboy 的回复:

SQL code
select * from table where content like '%商店名字%'

这里的content代表某个一个城市所有的商店的记录
content实际是个字符串,格式是:
0=商店名字1|某街道xx号|021-3333333
1=商店名字2|某街道xx号|021-3222222
2=商店名字3|……
[/Quote]
myhope88 2010-07-14
  • 打赏
  • 举报
回复
找规律就行了吧
美人心计1999 2010-07-14
  • 打赏
  • 举报
回复
content的格式是这样的:
真对每条记录的content:
0=名字1|地址1|电话1
1=名字2|地址2|电话2
2=名字3|地址3|电话3
字段里没有0=什么...只是存储的时候涉及到一条记录可能有多个店,所以采用这种方式来存储....
美人心计1999 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhaoyu0826 的回复:]

你那个字段里边,有0=这个东西吗。还是就是“名字|地址|电话这种格式”
要是有0=得想想,要是没有。可以用以下sql

SQL code
select * from A where '|' + content like '%|商店名字|%'
[/Quote]

表a
zhaoyu0826 2010-07-14
  • 打赏
  • 举报
回复
接楼上,如果不能实现你所谓的模糊查询。。只能自定义一个split函数了。。你可以查下mysql split()。相信能解决你的问题。
zhaoyu0826 2010-07-14
  • 打赏
  • 举报
回复
你那个字段里边,有0=这个东西吗。还是就是“名字|地址|电话这种格式”
要是有0=得想想,要是没有。可以用以下sql

select * from A where '|' + content like '%|商店名字|%' 


YHL27 2010-07-14
  • 打赏
  • 举报
回复
up...
美人心计1999 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cunningboy 的回复:]

SQL code
select * from table where content like '%商店名字%'
[/Quote]
这里的content代表某个一个城市所有的商店的记录
content实际是个字符串,格式是:
0=商店名字1|某街道xx号|021-3333333
1=商店名字2|某街道xx号|021-3222222
2=商店名字3|某街道xx号|021-5555555
3=商店名字4|某街道xx号|021-5666665
也就是说content里面不仅有商店名字,还有地址,电话.....如果你这样写,假如地址里面有这个关键字,而名字里面没有,是不是也能查出来,
我的意思是仅仅根据商店名查询..
CunningBoy 2010-07-14
  • 打赏
  • 举报
回复
select * from table where content like '%商店名字%'
加载更多回复(3)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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