SQLSERVER 筛选出数据包含特殊字符( 制表符、回车符、换行符)的字符型和text类型字段

本文介绍如何在SQLSERVER中筛选出数据中包含制表符、回车符、换行符的字符型和text类型字段。通过拼接查询语句并使用CASE语句进行条件判断,对查询结果进行分拆与汇总。
摘要由CSDN通过智能技术生成

1、首先拼接查询语句

-- 在查询出来的结果后面加上 ' null end  as has_special_character '
select 
    case when data_type  like '%text%'  then
              ' case when CAST('+column_name+' AS varchar(8000)) like ''%''+CHAR(10)+''%'' or CAST('+[column_name]+' AS varchar(8000)) like ''%''+CHAR(9)+''%'' or CAST('+[column_name]+' AS varchar(8000)) like ''%''+CHAR(13)+''%'' then '''+column_name+''' else '                 
         else
              ' case when '+column_name+' like ''%''+CHAR(10)+''%'' or CAST('+[column_name]+' AS varchar(8000)) like ''%''+CHAR(9)+''%'' or CAST('+[column_name]+' AS varchar(8000)) like ''%''+CHAR(13)+''%'' then '''+column_name+''' else '         
    end 'qu'
    -- column_name  +  ',' as colname
 from information_schema.columns
where table_name = 'MChannel'  
and ((CHARACTER_MAXIMUM_LENGTH is not null or data_type = 'uniqueidentifier') or data_type  like '%text%' )

2、由于SQLSERVER只能嵌套10个case when 语句,所以步骤1查询出来的脚本要进行分拆,如下:

1)步骤一的查询结果:

 case when chan_Name like '%'+CHAR(10)+'%' or CAST(chan_Name AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_Name AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_Name' else 
 case when chan_Status like '%'+CHAR(10)+'%' or CAST(chan_Status AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_Status AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_Status' else 
 case when chan_reference like '%'+CHAR(10)+'%' or CAST(chan_reference AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_reference AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_reference' else 
 case when chan_type like '%'+CHAR(10)+'%' or CAST(chan_type AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_type AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_type' else 
 case when chan_purpose like '%'+CHAR(10)+'%' or CAST(chan_purpose AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_purpose AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_purpose' else 
 case when CAST(chan_scheme AS varchar(8000)) like '%'+CHAR(10)+'%' or CAST(chan_scheme AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_scheme AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_scheme' else 
 case when CAST(chan_competitor AS varchar(8000)) like '%'+CHAR(10)+'%' or CAST(chan_competitor AS varchar(8000)) like '%'+CHAR(9)+'%' or CAST(chan_competitor AS varchar(8000)) like '%'+CHAR(13)+'%' then 'chan_competitor' else 
 case when chan_contractstatus like &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值