SQL替换函数

楼主
我是社区第238588位番薯,欢迎点我头像关注我哦~
1. 描述

大家平时在设计报表的时候,很多人都遇到过这样的问题,明明传递参数进去了,为什么检索不到数据呢?可在数据表中查看是有数据的呀?最后得出的结论:由于表中字段内容存在各种各样的问题导致的,比方字符串中间有多余的空格,换行符,制表符等等…


2. 思路

我们可以在新建数据集时,对过滤字段通过数据库自带的 TRIM( ), RTRIM( ), LTRIM( ), REPLACE() 等函数将其进行处理。


3. 函数使用范围

MySQL: TRIM( ), RTRIM( ), LTRIM( ), Replace()

Oracle:RTRIM( ), LTRIM( ), Replace()

SQL Server:RTRIM( ), LTRIM( ), Replace()


4. 示例4.1 准备数据

-- ---------------------------- -- Table structure for zsh_0220 -- ---------------------------- DROP TABLE [dbo].[zsh_0220] GO CREATE TABLE [dbo].[zsh_0220] ( [t_time] int NULL , [code] int NULL , [name] varchar(255) NULL , [cl] int NULL ) GO -- ---------------------------- -- Records of zsh_0220 -- ---------------------------- INSERT INTO [dbo].[zsh_0220] ([t_time], [code], [name], [cl]) VALUES (N'2015', N'110000', N' 北京市', N'7631') GO GO INSERT INTO [dbo].[zsh_0220] ([t_time], [code], [name], [cl]) VALUES (N'2015', N'120000', N'天津 市', N'3861') GO GO INSERT INTO [dbo].[zsh_0220] ([t_time], [code], [name], [cl]) VALUES (N'2015', N'130000', N'河北省 ', N'7631') GO GO INSERT INTO [dbo].[zsh_0220] ([t_time], [code], [name], [cl]) VALUES (N'2016', N'110000', N'北京市', N'8122') GO GO INSERT INTO [dbo].[zsh_0220] ([t_time], [code], [name], [cl]) VALUES (N'2016', N'120000', N' 天 津 市', N'3524') GO GO INSERT INTO [dbo].[zsh_0220] ([t_time], [code], [name], [cl]) VALUES (N'2016', N'130000', N'河北省', N'9006') GO GO



4.2 LTRIM(参数)介绍

语法:【参数】是表达式或者二进制数据。

返回内容:varcharnvarchar

SELECT * FROM dbo.[zsh_0220] where LTRIM (name) ='${dq_r}' --dq_r 默认值:北京市 --LTRIM():返回删除了前空格之后的字符表达式。


select LTRIM(' 我的前面有空格') --返回:‘我的前面有空格’


4.3 RTRIM(参数)介绍

语法:【参数】是表达式或者二进制数据。

返回内容:varcharnvarchar

SELECT * FROM dbo.[zsh_0220] where LTRIM (name) ='${dq_r}' --dq_r 默认值:河北省 --RTRIM():返回删除了后空格之后的字符表达式。

select RTRIM('我的前面有空格 ') --返回:‘我的后面有空格’



4.4 TRIM () 介绍

语法:TRIM ( [ [位置] [要移除的字串] FROM ] 字串)。

返回内容:varcharnvarchar

--TRIM():将把 [要移除的字串] 从字串的起头、结尾,或是起头及结尾移除。如果我们没有列出 [要移除的字串] 是什么的话,那空白就会被移除。 SELECT TRIM( '.' FROM '. test .') AS Result; --返回:删除了首尾的’.’的结果’ test ’


SELECT TRIM(' zsh ') --返回:’zsh’ 默认是删除首尾空格


4.5 Replace() 介绍(推荐使用)

语法:Replace(参数 1,参数 2,参数 3):返回 nvarchar 如果输入自变量之一是 nvarchar 数据类型; 否则,将返回 varchar。如果任何一个参数为 NULL,则返回 NULL。

参数解释:

  • 参数 1:为要搜索字符串表达式。

  • 参数 2:为要查找的子字符串。

  • 参数 3:用来替换的字符串。



Replace():用另一个字符串值替换出现的所有指定字符串值。

SELECT * FROM dbo.[zsh_0220] where replace(name,' ','') ='${dq_r}' --dq_r 默认值:天津市 -- replace(name,' ','')会替换掉name中所有的空格,然后与$dq_rj(天津市)进行匹配。



SELECT REPLACE('abcdefghicde','cde','xxx'); --返回:'abxxxfghixxx' --解释:用’xxx’替换掉了'abcdefghicde'中<b>所有</b>的’cde’


分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 2关注人数 3541浏览人数
最后回复于:2020-9-11 16:38

返回顶部 返回列表