SQL Server 字符串在實(shí)際操作中的注意事項(xiàng)
以下的文章主要向大家描述的是SQL Server 字符串在實(shí)際操作中值得我們大家注意的事項(xiàng)的描述,有一張關(guān)于新聞數(shù)據(jù)表 tb_news,該表有字段 news_id int, news_type int,前者是主鍵,后者是新聞所屬欄目ID,現(xiàn)在要求是這樣:
給定一個(gè)SQL Server 字符串a(chǎn)_right,該字符串中包含多個(gè)新聞欄目ID值,即news_type,并且存儲(chǔ)格式是'b'+news_type+'v',各ID值之間以逗號(hào)相隔,
例如:b1v, b2v, b3v……
現(xiàn)在要從新聞表中查詢出所有news_type經(jīng)格式轉(zhuǎn)換為'b'+news_type+'v'后,該格式的新聞欄目被包含在a_right中的新聞,剛
開(kāi)始寫(xiě)的查詢語(yǔ)句如下:
- select * from tb_news where charindex('b'+str(news_type)+'v', @a_right) >= 1
結(jié)果執(zhí)行結(jié)果與愿望中的結(jié)果大相徑庭!
經(jīng)過(guò)反復(fù)排查,***終于查出原因所在:SQL Server的str()函數(shù)有兩個(gè)參數(shù):str(express, length),當(dāng)未指定length時(shí),默認(rèn)
是轉(zhuǎn)為字符串后,SQL Server 字符串左邊保留10個(gè)空字符,例如:print 'b'+str(2),則結(jié)果為b 2。因此,需要將轉(zhuǎn)化后的字符串去掉空值,
此時(shí)可以使用ltrim()函數(shù),例如執(zhí)行:print 'b'+ltrim(str(2)),結(jié)果為b2。
于是將上面的查詢語(yǔ)句改為:
- select * from tb_news where charindex('b'+ltrim(str(news_type))+'v', @a_right) >= 1
順利執(zhí)行!以上的相關(guān)內(nèi)容就是對(duì)SQL Server 字符串操作注意點(diǎn)的介紹,望你能有所收獲。
上述的相關(guān)內(nèi)容就是對(duì)SQL Server 字符串操作注意點(diǎn)的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
原文標(biāo)題:SQL Server 字符串操作注意點(diǎn)
連接:http://www.cnblogs.com/pricks/archive/2010/04/02/1703292.html
【編輯推薦】