sql 删除左右字符之trim()函数用法

程序中的Trim函数大伙都知道的,但是要SQL中只有LTRIM,RTRIM删除左、右空白字符,而不能删除指定字符,所以我们自己写一个。

要求:

1. 能删除前后空白,如 ' aa ' -> 'aa'

2. 能删除前后字符,并不受空白影响,如 ' ;aa' -> 'aa'

3. 删除前后字符后,需清除前后空格,如 '; aa' -> 'aa'

4. 需删除前后连续的字符,如 ';;;aa' -> 'aa'

网上也有一些别人写的,我觉得很不错,不过貌似没有完整的能达到要求的,所以自己动手写了一个。

创建函数代码如下:

 代码如下 复制代码

/******
Object:  UserDefinedFunction [dbo].[TRIM]   
Script Date: 11/18/2011 09:10:14
Author: EF
******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[trim]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[trim]
GO
CREATE FUNCTION dbo.trim
(
    @Source VARCHAR(MAX),
    @Char CHAR(1)
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @i int;
    DECLARE @returnString VARCHAR(MAX)
    SET @returnString = @Source
    --清除前后空格
    SET @returnString = LTRIM(RTRIM(@returnString))
    --删除左侧字符
    SET @i = 0
    WHILE @i=0
    BEGIN
        IF LEFT(@returnString,1) = @Char
        SET @returnString = RIGHT(@returnString,LEN(@returnString)-1)
        ELSE
        SET @i=1
    END
    --删除右侧字符
    SET @i = 0
    WHILE @i=0
    BEGIN
        IF RIGHT(@returnString,1) = @Char
        SET @returnString = LEFT(@returnString,LEN(@returnString)-1)
        ELSE
        SET @i=1
    END
    --清除前后空格
    SET @returnString = LTRIM(RTRIM(@returnString))
    RETURN @returnString;
END

GO

--测试

select dbo.trim('asdfas;asdfasdfa;',';')
union all select dbo.trim(';asdfas;asdfasdfa;',';')
union all select dbo.trim('  ;asdfas;asdfasdfa;',';')
union all select dbo.trim('; asdfas;asdfasdfa;',';')

 

--结果

-------------------------------------------------------------------------

asdfas;asdfasdfa
asdfas;asdfasdfa
asdfas;asdfasdfa
asdfas;asdfasdfa

(4 行受影响)

时间: 2024-10-25 21:02:38

sql 删除左右字符之trim()函数用法的相关文章

【SQL】靠谱的TRIM函数,附赠过程一枚

原文:[SQL]靠谱的TRIM函数,附赠过程一枚 SQL中有LTRIM和RTRIM这两个函数分别用于去除字符串的首.尾空格,缺乏常见的能同时去除首尾的TRIM函数,另外,这俩函数都只对[空格]有效,所以如果首尾是制表符.换行符等等[空白],它们是不处理的~起码到sql 2k8 r2仍然如此.鉴于此,我写了个靠谱的TRIM函数,上代码: /*--------------------- 函数:去除头尾空白v0.01 Author:AhDung Update:201311301716 Rem:由于LE

php中的字符编码转换函数用法示例_php技巧

本文实例讲述了php中的字符编码转换函数的用法,分享给大家供大家参考.具体实现方法如下: 一般来说,在网页程序中,尤其是涉及到数据库的读出过程中,往往最恼火的就是字符编码的问题,php4.0.6以上的版本提供了mb_convert_encoding 可以方便的转换编码. 具体如下: 复制代码 代码如下: <?php /* Convert internal character encoding to SJIS */ $str = mb_convert_encoding($str, "SJIS

Java中split()函数和trim()函数的用法

split()函数是根据参数如",", "-", " "等, 分割String字符串, 返回一个String的数组(String[]), 可以通过索引指定元素. 如果未找到, 则返回整个String字符串, 作为String数组(String[])的第0个元素. trim()函数是去掉String字符串的首尾空格; 代码: /** * @author Spike * @time 2014.4.25 */ public class Split {

jQuery.trim() 函数及trim()用法详解_jquery

jQuery.trim()函数用于去除字符串两端的空白字符.该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止).它会清除包括换行符.空格.制表符等常见的空白字符. 该函数属于全局的jQuery对象. 语法 jQuery 1.0 新增该静态函数. jQuery.trim( str )   参数 描述 str String类型需要去除两端空白字符的字符串. 如果参数str不是字符串类型,该函数将自动将其转为字符串(一般调用其toString()方法).如果参数str为nu

oracle中的trim函数使用介绍_oracle

Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数有更深的认识. 如果提到Oracle TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种. 然而Oracle TRIM函数其实是具有删除"任意指定"字符的功能,不可谓不牛.我们来一次体验之旅. 1.先看一下Oracle TRIM函数的完整语法描述 TRIM([ { { LEADING | TRAI

php中的实现trim函数代码_php技巧

去掉前后的空格.  假设有一个字符串" ddd dd d ",经过Trim()之后成为"ddd dd d".  如上可以去掉两边多余的空格(包括制表符),但不能去掉中间的空格.  PHP中的trim()函数跟ASP中的trim()函数用法一样的,如果你接触过ASP,那么就自然会用的.  用法比较简单,在想要去掉空格的变量中加入如下:  <?php  echo trim($变量);  ?> 一般用到用户的password处理中. 定义和用法 trim()

php trim 删除空格字符与指定字符

以前没看trim函数以为他只能删除空白,今天发现它还可以删除"" - null "t" - tab "n" - new line "x0b" - 纵向列表符 "r" - 回车 " " - 普通空白字符 以及用户指定字符哦. <?php教程 定义和用法 trim() 函数从字符串的两端删除空白字符和其他预定义字符. 可选.规定要转换的字符串.如果省略该参数,则删除以下所有字符: &q

asp 实现对SQL注入危险字符进行重编码处理的函数_应用技巧

<% '****************************** '函数:CheckStr(byVal ChkStr) '参数:ChkStr,待验证的字符 '作者:阿里西西 '日期:2007/7/15 '描述:对SQL注入危险字符进行重编码处理 '示例:CheckStr("and 1=1 or select * from") '****************************** Function CheckStr(byVal ChkStr)  Dim Str:Str

php trim函数删除nbsp空格详解

此处所指的nbsp是实体,而不是nbsp四个字符  代码如下 复制代码 $str = " abc"; $converted = strtr($str, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); var_dump($converted); // 这儿才是要处理的字符串,上面的都是准备工作 在处理此问题的时候,经历了一番波折,先是var_dump出来,但是和正常的字符串无异. 后来又使用escap