SQL SERVER 字串操作注意點

來源:互聯網
上載者:User

  有一張新聞資料表tb_news,該表有欄位news_id int, news_type int,前者是主鍵,後者是新聞所屬欄目ID,現在要求是這樣:

給定一個字串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時,預設

是轉為字串後,字串左邊保留10個Null 字元,例如: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

  順利執行!

 

  附:

  一 str函數詳解

  在SQL SERVER Manage Studio中執行:

  print 'b'+str(333, 1) 結果為:b3;

  print 'b'+str(333, 2) 結果為:b33;

  print 'b'+str(333, 4) 結果為:b*;

  print 'b'+str(333)    結果為:b          333

  二 SQL SERVER中針對字串操作的函數有如下幾個常用:

  1.1 長度與分析用  

  datalength(Char_expr) 返回字串包含字元數,但不包含後面的空格 

  substring(expression,start,length) 不多說了,取子串 

  right(char_expr,int_expr) 返回字串右邊int_expr個字元  

  1.2 字元操作類  

  upper(char_expr) 轉為大寫 

  lower(char_expr) 轉為小寫

  space(int_expr) 產生int_expr個空格

  replicate(char_expr,int_expr)複製字串int_expr次

  reverse(char_expr) 反轉字串

  stuff(char_expr1,start,length,char_expr2) 將字串char_expr1中的從start開始的length個字元用char_expr2代替 

  ltrim(char_expr) 去掉左邊的空格;rtrim(char_expr) 去掉右邊的空格

  ascii(char) char(ascii) 兩函數對應,取ascii碼,根據ascii嗎取字元  

  1.3 字串尋找

  charindex(char_expr,expression) 返回char_expr的起始位置;索引從數字1開始,而非0

  patindex("%pattern%",expression) 返回指定模式的起始位置,否則為0  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.