大家看看这个sql语句应该怎么写,在线等

jackLiuhq 2005-05-26 09:49:47
我有一张表:
如:
username:张大安
userinfo:党员|||未婚|||中国|||湖北|||武汉|||北京大学
username:李小伶
userinfo:团员|||未婚|||中国|||湖南|||长沙|||清华大学

userinfo 是将用户的基本信息,组织成一个字符串存进一个字段
现在在前台,有个表单,从下拉菜单中找出所有该城市的用户

如选择“北京”,提交,选出所有北京的用户

现在是肯定知道城市在字符串中以“|||”分隔的第5个位置

请问我这个sql语句应该怎么写?

因为我有可能和别的表并列查询,如从user表中选出用户名,所在城市,从订单表中选出他的订单

在线等,急!!!!

...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackLiuhq 2005-05-26
  • 打赏
  • 举报
回复
dan
但问题是我的用户表里面,省份可能是10个字符,如果我写死了,肯定不行的
duanduan1122 2005-05-26
  • 打赏
  • 举报
回复
SUBSTRING
返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。

语法
SUBSTRING ( expression , start , length )

参数
expression

是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。

start

是一个整数,指定子串的开始位置。

length

是一个正整数,指定将返回 expression 的字符数或字节数。如果 length 为负数,则会返回错误。



说明 由于在 text 数据上使用 SUBSTRING 时 start 和 length 指定字节数,因此 DBCS 数据(如日本汉字)可能导致在结果的开始或结束位置拆分字符。此行为与 READTEXT 处理 DBCS 的方式一致。然而,由于偶而会出现奇怪的结果,建议对 DBCS 字符使用 ntext 而非 text。



示例
A. 在字符串上使用 SUBSTRING
下例显示如何只返回字符串的一部分。该查询在一列中返回 authors 表中的姓氏,在另一列中返回 authors 表中的名字首字母。

USE pubs
SELECT au_lname, SUBSTRING(au_fname, 1, 1)
FROM authors
ORDER BY au_lname

下面是结果集:

au_lname
---------------------------------------- -
Bennet A
Blotchet-Halls R
Carson C
DeFrance M
del Castillo I
...
Yokomoto A

(23 row(s) affected)

duanduan1122 2005-05-26
  • 打赏
  • 举报
回复
你可以创建一个存储过程:
create procedure name_order(@city varchar(30))
as
select username,substring(userinfo,22,4) 城市,orderid
from users s join orders o
on s.id=o.id --这两张表的连接字符串
where substring(userinfo,22,4)=@city
duanduan1122 2005-05-26
  • 打赏
  • 举报
回复
这样写:
select username,substring(userinfo,22,4) 城市,orderid
from users s join orders o
on s.id=o.id
where substring(userinfo,22,4)='你的城市名称'

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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