ASE15.0.3中替换字符串函数str_replace的奇怪的用法
2010-06-12 18:41
316 查看
---------------------------------------------------------------------------
---- 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
---- 转载务必注明原始出处
:
http://blog.csdn.net/andkylee
---
2010-06-12
18:39:40
---- 关键字: str_replace 15.0 null 空格 替换
----------------------------------------------------------------------------
在ASE12.5.x平台中没有替换字符串的函数,也就是说没有类似replace的函数。对于replace这个词,我想有编程经验的肯定一看字面意思就知道是将某一字符串中指定的字符串替换为另外的字符串。可惜的是这么简单的功能在ase12.5.x中没有相应的函数,只有一个可怜的stuff函数。
stuff函数仅仅能够替换某一个字符串中某一个位置处的字符串为另外的字符串,如果这个字符串中有多处需要被替换呢?抱歉,stuff歇菜了。
一个简单的类似replace的功能还得需要写个过程或者函数来实现。 写起来效率低执行起来效率更低, so pooor.
谁要是实现了用简单的一两条sql语句顶替replace的功能,麻烦告诉我一声。谢谢!
幸运的是,ASE15.0版本中引入了类似replace的函数,但是人家的名字叫str_replace,不知道为啥?replace这个词和那个关键字冲突吗? 不解ZZZZZZZ
str_replace函数的语法很简单:
replace("string_expression1", "string_expression2", "string_expression3")
就是:将字符串1中所包含的所有
的字符串2都用字符串3统统替换。
一个简单的例子:
但是, 网上有人发帖说str_replace不能替换字符串中的空格为“(也就是说删除字符串中的所有空格)。不看官方文档,想当然的就写出来这样的语句:select str_replace('123 456 ',' ','')
但是很可惜,执行失败。
如上可以看到select str_replace('123 456 ',' ','')并没有替换其中的空格为空(亦即删除其中的所有空格),用函数str_replace执行前后的字符串是相同的。
通过查阅官方文档中关于str_replace的介绍,有下面的两点需要注意:
1. Adaptive Server 将空字符串常量自动转换为 1 个空格的字符串,以便将该字符串与 NULL 值区分开。
2. str_replace 在第三个参数中接受 NULL,将其视为尝试用 NULL 替换 string_expression2,有效地将 str_replace 转换成“字符串切除”
操作。
这两条的意思是说:在函数str_replace中""相当于" ", NULL 相当于“”(空字符)。
""相当于" "
示例:
两个空格还是2个空格意思:
1> select str_replace("cde fghi "," ","_")
2> go
---------
cde fghi
(1 row affected)
NULL 相当于“”(空字符)
示例如下:
总结:
在函数str_replace中NULL 相当于“”(空字符),""相当于" " 。其它都是正常的。
---- 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
---- 转载务必注明原始出处
:
http://blog.csdn.net/andkylee
---
2010-06-12
18:39:40
---- 关键字: str_replace 15.0 null 空格 替换
----------------------------------------------------------------------------
在ASE12.5.x平台中没有替换字符串的函数,也就是说没有类似replace的函数。对于replace这个词,我想有编程经验的肯定一看字面意思就知道是将某一字符串中指定的字符串替换为另外的字符串。可惜的是这么简单的功能在ase12.5.x中没有相应的函数,只有一个可怜的stuff函数。
stuff函数仅仅能够替换某一个字符串中某一个位置处的字符串为另外的字符串,如果这个字符串中有多处需要被替换呢?抱歉,stuff歇菜了。
一个简单的类似replace的功能还得需要写个过程或者函数来实现。 写起来效率低执行起来效率更低, so pooor.
谁要是实现了用简单的一两条sql语句顶替replace的功能,麻烦告诉我一声。谢谢!
幸运的是,ASE15.0版本中引入了类似replace的函数,但是人家的名字叫str_replace,不知道为啥?replace这个词和那个关键字冲突吗? 不解ZZZZZZZ
str_replace函数的语法很简单:
replace("string_expression1", "string_expression2", "string_expression3")
就是:将字符串1中所包含的所有
的字符串2都用字符串3统统替换。
一个简单的例子:
1> select str_replace('This is Andkylee!My nAme is andkylee!','A','a') 2> go ------------------------------------- This is andkylee!My name is andkylee! (1 row affected)
但是, 网上有人发帖说str_replace不能替换字符串中的空格为“(也就是说删除字符串中的所有空格)。不看官方文档,想当然的就写出来这样的语句:select str_replace('123 456 ',' ','')
但是很可惜,执行失败。
1> select len('123 456 '),str_replace('123 456 ',' ','') ,len(str_replace('123 456 ',' ','')) 2> go ----------- -------- ----------- 8 123 456 8 (1 row affected)
如上可以看到select str_replace('123 456 ',' ','')并没有替换其中的空格为空(亦即删除其中的所有空格),用函数str_replace执行前后的字符串是相同的。
通过查阅官方文档中关于str_replace的介绍,有下面的两点需要注意:
1. Adaptive Server 将空字符串常量自动转换为 1 个空格的字符串,以便将该字符串与 NULL 值区分开。
2. str_replace 在第三个参数中接受 NULL,将其视为尝试用 NULL 替换 string_expression2,有效地将 str_replace 转换成“字符串切除”
操作。
这两条的意思是说:在函数str_replace中""相当于" ", NULL 相当于“”(空字符)。
""相当于" "
示例:
1> select str_replace("cde fghi ","","_") 2> go --------- cde_fghi_ (1 row affected) 1> select str_replace("cde fghi "," ","_") 2> go --------- cde_fghi_ (1 row affected)
两个空格还是2个空格意思:
1> select str_replace("cde fghi "," ","_")
2> go
---------
cde fghi
(1 row affected)
NULL 相当于“”(空字符)
示例如下:
1> select str_replace("cde fghi "," ",null),len(str_replace("cde fghi "," ",null)) 2> go --------- ----------- cdefghi 7 (1 row affected) 1> select str_replace("cde fghi ","",null),len(str_replace("cde fghi "," ",null)) 2> go --------- ----------- cdefghi 7 (1 row affected)
总结:
在函数str_replace中NULL 相当于“”(空字符),""相当于" " 。其它都是正常的。
相关文章推荐
- php中正则替换函数ereg_replace用法实例
- JS Replace 全部替换字符的用法小结
- 字符串中符号的替换---replace的用法
- 本文实例讲述了js中正则的查找match()与替换replace()的用法。
- string 的一些用法——插入(insert)、删除(erase)、替换(replace)和查找(find)
- 如何替换掉日期类型值为空时的默认日期? SQL语句Replace的应用和Case when 的用法。
- boost::regex_replace自定义替换函数用法
- sql中替换函数(replace(),STUFF())的用法
- JS基于正则表达式的替换操作(replace)用法示例
- javascript 正则替换 replace(regExp, function)用法
- php字符串替换函数substr_replace()用法实例
- js中replace的用法-正则替换
- SQL中的REPLACE替换字符函数的用法(使之支持text/ntext) (2
- DOM节点的替换或修改函数replaceChild()用法实例
- php中preg_replace正则替换用法分析【一次替换多个值】
- PHP字符串替换str_replace()函数4种用法详解
- hive中 regexp_replace的用法,替换特殊字符问题
- preg_replace的简单用法php正则替换
- JavaScript replace字符串替换函数的用法
- str.replace替换的用法