<small id='nrWJ'></small> <noframes id='L9KZ'>

  • <tfoot id='Pfgdk1rTm3'></tfoot>

      <legend id='Xi03gwW'><style id='B4dro8Y1'><dir id='e07pWdctL'><q id='EPKnM1t'></q></dir></style></legend>
      <i id='pKHLqf6bl'><tr id='kcx6'><dt id='Groi'><q id='RLuIX4'><span id='HX3GdIb0fe'><b id='sgMtjaFSY'><form id='XNZvpSGq'><ins id='WaVkZ'></ins><ul id='uBcFIDx'></ul><sub id='Lbi1'></sub></form><legend id='wMRNV0YZ'></legend><bdo id='w25q'><pre id='4Jjq'><center id='KCkNVmMT1J'></center></pre></bdo></b><th id='gD5XCe'></th></span></q></dt></tr></i><div id='7Zc6tav'><tfoot id='IAvtek2'></tfoot><dl id='PLSauFYj'><fieldset id='DJK2'></fieldset></dl></div>

          <bdo id='i0M8VxneSC'></bdo><ul id='LJckZ1l5P'></ul>

          1. <li id='FdUWYNqg'></li>
            登陆

            SQL中特殊的字符串替换函数,处理您头疼的批量替换问题

            admin 2019-05-18 248人围观 ,发现0个评论

            常用SQL的朋友应该知道,SQL中一般都会供给一些字符串处理函数。假如要您把一切的字符串处理函数都摆出来,估量您心里就没底了。但假如我问您replace函数,您必定用过,这是批量替换字符串的常用函数。

            常见数据库支撑的字符串处理函数

            我先不卖关子了,下面把一切最新版别SQLServer支撑的字符串函数都列出来,其间画红框的两个便是今日我要讲的,您看看先有个底。

            SQLServer的字符串函数跟MySSQL中特殊的字符串替换函数,处理您头疼的批量替换问题QL、PostgreSQL比起来,的确是太少了。

            下图是MySQL支撑的常用字符串函数,当然也有replace函数,用法与SQLServer迥然不同,您能够参阅一下:

            下图是PostgreSQL支撑的常用字符串处理函数,当然也有replace函数,用法与SQLServer和MySQL也是迥然不同,同时贴出来供您参阅下:

            经过上面三图比照咱们大约能够看出,不同数据库系统支撑的字符串处理函数都差不多吧,比方都支撑trim、replace、left、right、substring等等,还有一些或许称号不同,内在和用法却都很类似。

            真是搞不懂微软为何如此小气,这么有实力的IT巨子,数据库支撑的函数却这么瘠薄。一些咱们很需求的函数,总是缓不济急。比方像切割字符串的STRING_SPLIT、批量替换的TRANSLATE、去掉两端空格的SQL中特殊的字符串替换函数,处理您头疼的批量替换问题TRIM等,晚一点就晚一点吧,总比没有强。

            批量替换,看似简略的大问题

            说批量替换问题是小问题,是因为咱们总会找到方法处理,合作循环和replace,总有方法处理,但有时分的确会很费事,比方,请问您怎么把字符串

            12@3#4$56^78*9!/@#$^*

            中的非数字字符替换掉?

            的确不难对吧,比方写个循环把数字抓出来或许把非数字除掉,还比方用replace一个一个替换。循环抓取的我就不写了,有爱好的朋友能够看看我之前的文章中有过这样的比如,SQL中特殊的字符串替换函数,处理您头疼的批量替换问题咱们下面尝试用replace来完成:

            declare @str varchar(100);
            set @str='12@3#4$56^78*9!/@#$^*';
            set @SQL中特殊的字符串替换函数,处理您头疼的批量替换问题str=replace(@str,'@',space(0));
            set @str=replace(@str,'#',space(0));
            set @str=replace(@str,'$',space(0));
            set @str=replace(@str,'^',space(0));
            set @str=replace(@str,'*',space(0));
            set @str=replace(@str,'!',spacSQL中特殊的字符串替换函数,处理您头疼的批量替换问题e(0));
            set @str=replace(@str,'/',space(0));

            运转成果参阅下图:

            成果是没错的,完成了,估量大部分朋友首要想到的便是这么写。但您觉得爽吗?假如非数字字符还有许多呢?鼠疫

            真的很不爽,虽然能完成,但的确很费事。但假如用translate,就简略多了。下面咱们就用奇特的Translate函数试试吧。

            TRANSLATE:特别的批量却能处理大问题

            SQLServer中有一个translate函数,估量您未必了解,因这是2017版才推出的函数。有朋友会问,已然有了replace,为何还要多此一举搞个translate出来呢?

            其实translate与replaceSQL中特殊的字符串替换函数,处理您头疼的批量替换问题是大不相同的,咱们先看看其语法界说:

            TRANSLATE ( 字符串,待替换字符集,替换为字符集)

            眼尖的朋友应该能看出来,translate函数中,待替换的内容是字符调集,而不是单纯的字符串。还以上面的比如为例。

            12@3#4$56^78*9!/@#$^*

            这儿面的非数字字符,有@#$^*!/七个,咱们能够批量将7个特别字符替换掉。脚本如下:

            select translate(@str,'@#$^*!/',space(7));

            怎么样,是不是很简略,第一个参数是待替换的字符串,第二个参数是需求被替换的一切字符,第三个参数是各自替换成对应方位的对应字符。咱们一同看看运转作用:

            其间七个特别字符,映射的是七个空格,稍显惋惜,中心的空格并没有被替换掉。这也是translate函数的一个要求,便是待替换字符个数与替换为字符个数必需要相同多。剩下的空格咱们结合replace,一次就搞定了,脚本如下:

            select replace(translate(@str,'@#$^*!/',space(7)),space(1),space(0));

            怎么样,是不是很奇特?

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP