以下的文章主要向大家描述的是SQL Server 字符串在实际操作中值得我们大家注意的事项的描述,有一张关于新闻数据表 tb_news,该表有字段 news_id int, news_type int,前者是主键,后者是新闻所属栏目ID,现在要求是这样:
给定一个SQL Server 字符串a_right,该字符串中包含多个新闻栏目ID值,即news_type,并且存储格式是'b'+news_type+'v',各ID值之间以逗号相隔,
例如:b1v, b2v, b3v……
现在要从新闻表中查询出所有news_type经格式转换为'b'+news_type+'v'后,该格式的新闻栏目被包含在a_right中的新闻,刚
开始写的查询语句如下:
- select * from tb_news where charindex('b'+str(news_type)+'v', @a_right) >= 1
结果执行结果与愿望中的结果大相径庭!
经过反复排查,***终于查出原因所在:SQL Server的str()函数有两个参数:str(express, length),当未指定length时,默认
是转为字符串后,SQL Server 字符串左边保留10个空字符,例如:print 'b'+str(2),则结果为b 2。因此,需要将转化后的字符串去掉空值,
此时可以使用ltrim()函数,例如执行:print 'b'+ltrim(str(2)),结果为b2。
于是将上面的查询语句改为:
- select * from tb_news where charindex('b'+ltrim(str(news_type))+'v', @a_right) >= 1
顺利执行!以上的相关内容就是对SQL Server 字符串操作注意点的介绍,望你能有所收获。
上述的相关内容就是对SQL Server 字符串操作注意点的描述,希望会给你带来一些帮助在此方面。
原文标题:SQL Server 字符串操作注意点
连接:http://www.cnblogs.com/pricks/archive/2010/04/02/1703292.html
【编辑推荐】