【SQL】靠譜的TRIM函數,附贈過程一枚

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   ar   os   sp   div   

原文:【SQL】靠譜的TRIM函數,附贈過程一枚

SQL中有LTRIM和RTRIM這兩個函數分別用於去除字串的首、尾空格,缺乏常見的能同時去除首尾的TRIM函數,另外,這倆函數都只對【空格】有效,所以如果首尾是定位字元、分行符號等等【空白】,它們是不處理的~起碼到sql 2k8 r2仍然如此。鑒於此,我寫了個靠譜的TRIM函數,上代碼:

/*---------------------函數:去除頭尾空白v0.01Author:AhDungUpdate:201311301716Rem:由於LEN不統計尾隨空格,所以做特別處理---------------------*/ALTER FUNCTION dbo.Trim(@s VARCHAR(7999))RETURNS VARCHAR(7999) ASBEGINWHILE ASCII(RIGHT(@s,1)) IN (9,10,13,32)BEGINSET @s=LEFT(@s, CASE ASCII(RIGHT(@s,1)) WHEN 32 THEN LEN(@s) ELSE LEN(@s)-1 END)ENDWHILE ASCII(@s) IN (9,10,13,32)BEGINSET @s=RIGHT(@s,LEN(@s)-1)ENDRETURN @sEND

一開始的思路是從字串的第一個字元開始遍曆判斷,若是【空格、定位字元、斷行符號、換行】,就去除,然後再從最右邊來一遍。但操蛋的LEN函數是不計尾隨空格的,所以改由從右邊開始遍曆,並將計就計利用LEN這個操蛋設定去除右邊空格,完了再來處理左邊。

另外附贈一枚基於該函數的一個過程,作用是去除指定表欄位的空白,可選去除中間空白(預設是不去除):

/*-----------------------------------過程:去除指定表欄位的頭尾空白v0.01Author:AhDungUpdate:201311301720-----------------------------------*/ALTER PROC PTrimField  @TbName sysname, @ColName sysname, @RemoveAll BIT = 0 --是否移除中間的空白。預設=否ASSET NOCOUNT ONDECLARE @sql VARCHAR(1000) = ‘UPDATE [‘+@TbName+‘]SET [‘+@ColName+‘] = dbo.‘+CASE @RemoveAll WHEN 0 THEN ‘Trim‘ ELSE ‘RemoveAllWhiteSpace‘ END+‘([‘+@ColName+‘])WHERE PATINDEX(‘‘%[‘‘+CHAR(32)+CHAR(9)+CHAR(10)+CHAR(13)+‘‘]%‘‘,[‘+@ColName+‘])>0‘EXEC (@sql)

該過程對於一些允許使用者填寫,但寫入的時候又未在程式中做處理的欄位有修整作用。此外,該過程除了用到上面的TRIM函數,還用到另一個叫RemoveAllWhiteSpace的函數,用於去除字串中所有空白,該函數也一併附上:

/*---------------------函數:移除所有空白v0.01Author:AhDungUpdate:201311301716---------------------*/CREATE FUNCTION dbo.RemoveAllWhiteSpace(@s VARCHAR(7999))RETURNS VARCHAR(7999) ASBEGINRETURN REPLACE(REPLACE(REPLACE(REPLACE(@s,CHAR(32),‘‘),CHAR(9),‘‘),CHAR(10),‘‘),CHAR(13),‘‘)END

文畢。

【SQL】靠譜的TRIM函數,附贈過程一枚

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.