我有一张表:
如:
username:张大安
userinfo:党员|||未婚|||中国|||湖北|||武汉|||北京大学
username:李小伶
userinfo:团员|||未婚|||中国|||湖南|||长沙|||清华大学userinfo 是将用户的基本信息,组织成一个字符串存进一个字段
现在在前台,有个表单,从下拉菜单中找出所有该城市的用户如选择“北京”,提交,选出所有北京的用户现在是肯定知道城市在字符串中以“|||”分隔的第5个位置,但具体字符位置无法确定,因为省份有可能是3个字符,如黑龙江,国籍也可能是很长,如巴基斯坦
请问我这个sql语句应该怎么写?因为我有可能和别的表并列查询,如从user表中选出用户名,所在城市,从订单表中选出他的订单有人说这样写:
select username,substring(userinfo,22,4) 城市,orderid
from users s join orders o
on s.id=o.id
where substring(userinfo,22,4)='你的城市名称'这样肯定不行的,怎么能肯定就在22个字符的位置啊在线等,急!!!!
如:
username:张大安
userinfo:党员|||未婚|||中国|||湖北|||武汉|||北京大学
username:李小伶
userinfo:团员|||未婚|||中国|||湖南|||长沙|||清华大学userinfo 是将用户的基本信息,组织成一个字符串存进一个字段
现在在前台,有个表单,从下拉菜单中找出所有该城市的用户如选择“北京”,提交,选出所有北京的用户现在是肯定知道城市在字符串中以“|||”分隔的第5个位置,但具体字符位置无法确定,因为省份有可能是3个字符,如黑龙江,国籍也可能是很长,如巴基斯坦
请问我这个sql语句应该怎么写?因为我有可能和别的表并列查询,如从user表中选出用户名,所在城市,从订单表中选出他的订单有人说这样写:
select username,substring(userinfo,22,4) 城市,orderid
from users s join orders o
on s.id=o.id
where substring(userinfo,22,4)='你的城市名称'这样肯定不行的,怎么能肯定就在22个字符的位置啊在线等,急!!!!
解决方案 »
- 如何跨服务器读取附件
- 继续提问 asp.net 环境中动态加载 卸载 c# dll 的问题
- 如何调用存储过程?
- asp.net 利用模板实现WORD生成服务端部署问题
- 请教一个跨框架取值的问题
- 共享一套OA源码,大家一起调试一下
- ajax 怎样从javascript传一个字符串数组到ajax,ajax怎样接收。返回都是null值。不知为何。
- 如何让button点击后打开一个文件浏览框?
- 为什么用Visual Studio 做的网站一定要在根目录下或站点下???
- 怎样把datagrid里的数据显示到textbox里进行编辑的问题。
- 急,Freetextbox如何将上传的图片存入数据库,而不是存入服务器的目录中?
- iis 6.0 与 shtml 问题
charindex('111',userinfo(charindex('|||',userinfo,(charindex('|||',userinfo,charindex('|||',userinfo)+1)+1)+1)+3
(至于最后加的是3还是4,你自己试试吧)
同理,你可以用同样的方法获得最后一个'|||'字符的位置,那么城市的名称自然就找到了
string city="深圳";
string sql="select * from [user] where '|||'+userinfo+'|||' like '%|||' + '"+city+"' + '|||%'";
where userinfo like '%|||'+cityname+'|||%'
这样也差不多了吧