正确查询方式
select a.CityID,a.CityName from [Join].dbo.Table2 as a where exists(select * from Table1 where Id=5717 and charindex(
','+
cast(a.CityID as varchar(max))
+','
,CityList)>0)
红色的
','
一定要加上,如果不加查询结果将会有误。
为了代码的规范,在试用 逗号 隔开字符串的存储时,一定要前后都要加','。这样不管在数据处理还是在前段做逻辑判断都比较规范。
以逗号开头,以逗号结尾
:charindex(
','+
cast(a.CityID as varchar(max))
+','
,CityList)>0
错误的查询方式
1:select a.CityID,a.CityName from [Join].dbo.Table2 as a where exists(select * from Table1 where Id=5717 and charindex(cast(a.CityID as varchar(max)),CityList)>0)
2:select a.CityID,a.CityName from [Join].dbo.Table2 as a where exists(select * from Table1 where Id=5717 and charindex(cast(a.CityID as varchar(max))+',',CityList)>0)
3:select a.CityID,a.CityName from [Join].dbo.Table2 as a where exists(select * from Table1 where Id=5717 and charindex(','+cast(a.CityID as varchar(max)),CityList)>0)
SO_Order.fsn
FROM so_order
INNER JOIN so_orderitem ON CHARINDEX(so_Orderitem.fid, SO_Order.fid) >= 1
WHERE so_order.FOrderDate = '2015-09-06'
语句不算复杂,只是执行比较慢,下面是关于这SQL语句的一些信息:
–1.SQL执行203条数据
–2.耗时12秒
–3.so_order表的fid
字段
是
字符串
集合,
–由1-2个
declare @str as nvarchar(1000)
declare @areanos as nvarchar(200)
--这是把areanos
字段
赋值给@areanos变量
set @areanos='1,2,3'
--将拼接的SQL脚本赋值给变量
set...
SELECTSTUFF((SELECT','+convert(VARCHAR, USER_NAME)FROMTE_USERFORXML PATH('')), 1, 1,'')ASUserName
的
字段
,用
逗号
分隔用户的兴趣爱好。在 MySQL 中,如果要
查询
某个
字段
以
逗号
分隔的值,并且其中一个
字符串
与
查询
条件相等,可以使用。该函数用于在
逗号
分隔的
字符串
中查找指定的值。执行上述
查询
后,将返回具有 "football" 兴趣爱好的用户记录。的值与您实际的
数据库
和表结构相匹配。
以下测试用于去除任何
字符串
中连线的分隔符 代码如下: –去除
字符串
中连续的分隔符 declare @str nvarchar(200) declare @split nvarchar(200),@times int set @str=’中 国1 2 34 55 5 6 7 7′;–字符 set @split=’ ‘; –分隔符 select @times=(len(@str)-len(replace(@str,@split+@split,”)))/2 while @times>0 begin set @str=REPLACE(@str,@split+@split,’ ‘) set @time
charindex(@split,@datas) #获取第一个分隔符所在位置
#@split为分隔符,通过什么分隔符号进行
字段
分隔
#@datas为含有分隔符的
字段
,对此
字段
进行分隔
substring(@datas,@startindex,@endindex) #截取
字段
#@datas用于截取的
字段
#@startindex开始索引位置
#@endindex结束索引位置
len(@dat
四种join的区别已老生常谈:
INNER JOIN(也可简写为JOIN): 如果表中有至少一个匹配,则返回行LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行FULL JOIN: 只要其中一个表中存在匹配,就返回行
那么问题来了,还有一种常见的写法是将表用
逗号
隔开
,那这个又是怎么连接的呢。
先看这两张表
NeID int not null primary key identity(1,1),--新闻ID自增
NeTitle nvarchar(100) null,--标题
NeContent ntext null,--内容
NeCreateTime datetime null,--时间
/***********Function**************/
create Function StrToTable(@str varchar(1000))
Returns @tableName Table
str2table varc...
CREATE TABLE TA(id INT,[value] VARCHAR(100), class VARCHAR(10));
INSERT INTO TA(id,[value],class)
SELECT 1,'3,2,4,5','no' UNION ALL
SELECT 2,'5,1,1+2','yes'
SELECT T.id
,SUBSTRING(T.[va
商品表 goods 有学校
字段
school_ids
学校
字段
school_ids 中保存学校表 school 的id,如果商品包含多个学校则多个id使用
逗号
分隔保存
school:
goods:
最终
查询
:两个表关联,goods表中
字段
中school_ids
逗号
隔开
和school表中的id关联
MySQL版:
SELECT g.id,g.school_ids,GROUP_CONCAT(s...