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(参数)介绍语法:【参数】是表达式或者二进制数据。 返回内容:varchar 或 nvarchar SELECT * FROM dbo.[zsh_0220] where LTRIM (name) ='${dq_r}' --dq_r 默认值:北京市 --LTRIM():返回删除了前空格之后的字符表达式。
select LTRIM(' 我的前面有空格') --返回:‘我的前面有空格’
4.3 RTRIM(参数)介绍
语法:【参数】是表达式或者二进制数据。 返回内容:varchar 或 nvarchar SELECT * FROM dbo.[zsh_0220] where LTRIM (name) ='${dq_r}' --dq_r 默认值:河北省 --RTRIM():返回删除了后空格之后的字符表达式。 select RTRIM('我的前面有空格 ') --返回:‘我的后面有空格’
4.4 TRIM () 介绍语法:TRIM ( [ [位置] [要移除的字串] FROM ] 字串)。 返回内容:varchar 或 nvarchar --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’
|