`
holoblog
  • 浏览: 1228327 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18937
文章分类
社区版块
存档分类
最新评论

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 行受影响)
0
0
分享到:
评论

相关推荐

    解析在MYSQL语法中使用trim函数删除两侧字符

    我第一时间就是想到,PHP函数中的trim是不是也可能用到mysql中呢,回答是肯定的。你可以从MYSQL手册中找到,当然,你可以百度一下,我下面说的与前人相同。SELECT *,trim(LEADING ‘/’ FROM `path`) as paths FROM ...

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...

    C#检测是否有危险字符的SQL字符串过滤方法

    本文以一个C#的SQL数据库字串操作函数为例,说明如何实现对SQL字符串过滤、检测SQL是否有危险字符、修正sql语句中的转义字符,确保SQL不被注入等功能。具体实现代码如下: SQL字符串过滤函数: public static bool ...

    详解MySQL字符串函数TRIM()、填充函数LPAD()、RPAD()、字符串长度LENGTH()用法(三)

    文章目录一、删除空格函数TRIM()、LTRIM()、RTRIM()1、TRIM()2、LTRIM()3、RTRIM()二、填充函数LPAD()、RPAD()1、LPAD()2、RPAD()三、字符串长度LENGTH()、CHAR_LENGTH()1、LENGTH()2、CHAR_LENGTH() 前言:在实际的...

    Oracle数据库实验 -- 函数和表达式

    trim( ) 表示字符串string2去除前面|后面|前后面(leading|trailing|both)的字符string1,默认去除方式为both

    oracle函数大全.doc

    SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97...

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

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

    sqlServer实现去除字符串空格

    说起去除字符串首尾空格大家肯定第一个想到trim()函数,不过在sqlserver中是没有这个函数的,却而代之的是ltrim()和rtrim()两个函数。看到名字所有人都 知道做什么用的了,ltrim()去除字符串左边的空格,rtrim()去除...

    sql数据库基础知识整理,常用函数及常用语法

    len() 与 datalength() 区别:len是返回字符长度 datalength是返回字节长度 LTrim() RTrim() Trim () isnull(@FilterStr,N'')如果时空将其替换

    LINQ_to_SQL语法及实例大全

    LINQ to SQL语句(21)之用户定义函数 80 1.在Select中使用用户定义的标量函数 80 2.在Where从句中 使用用户定义的标量函数 81 3.使用用户定义的表值函数 83 4.以联接方式使用用户定义的表值函数 84 LINQ to SQL语句...

    MySQL中一些常用函数列举

    1.字符函数: 名称 描述 CONCAT() 字符连接 CONCAT_WS() 使用指定的分隔符进行字符连接 FORMAT() 数字格式化 LOWER() 转换成小写字母 UPPER() 转换成大写字母 LEFT() 获取左侧字符 RIGHT() 获取...

    2009达内SQL学习笔记

    大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...

    oracle 函数大全.txt

    0,解析字符串的存储过程,1.返回与指定的字符对应的十进制数; ,2.给出整数,返回对应的字符;,3.连接两个字符串; 4.返回字符串并将字符串的第一个字母变为大写; 5.INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回...

    delphi 开发经验技巧宝典源码

    0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算函数 67 0099 使用Abs函数返回指定数值的绝对值 67 0100 使用Mod函数计算1~10之间的奇数和 67 0101 使用Div函数做整除操作 68 0102 使用DivMod...

    delphi 开发经验技巧宝典源码06

    0098 使用Trim函数删除字符串的首尾空格 66 4.2 数学计算函数 67 0099 使用Abs函数返回指定数值的绝对值 67 0100 使用Mod函数计算1~10之间的奇数和 67 0101 使用Div函数做整除操作 68 0102 使用DivMod...

    MySQL批量去掉某个字段中的空格

    不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数。 (1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中...

    oracle使用管理笔记(一些经验的总结)

    (1)字符函数 26 (2)数学函数 26 (3)日期函数 27 (4)给表取别名的时候,不能加as;但是给列取别名,是可以加as 27 (5)转换函数 27 (6) to_char(date,'format') 27 (7) to_date(string,'format') 28 (8)系统函数 29 14...

    PHP和MySQL Web开发第4版pdf以及源码

    4.2.1 字符串的整理:chop()、ltrim()和trim() 4.2.2 格式化字符串以便显示 4.2.3 格式化字符串以便存储:addslashes()和stripslashes() 4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()...

    PHP和MySQL WEB开发(第4版)

    4.2.1 字符串的整理:chop()、ltrim()和trim() 4.2.2 格式化字符串以便显示 4.2.3 格式化字符串以便存储:addslashes()和stripslashes() 4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和...

Global site tag (gtag.js) - Google Analytics