繁体   English   中英

显示所有带有前导或尾随空格的记录

[英]Display all records with leading or trailing spaces

我正在寻找一个SQL查询(使用SQL 2008)以搜索我指定的各个字段(甚至是特定表中的所有字段)的前导或尾随空格。 我希望输出为包含以下数据的两列:

ID号,数据(带空格),字段名称

像往常一样感谢您的帮助!

您可以使用DATALENGTH

SELECT ID, Data, FieldName
FROM table
WHERE DATALENGTH(RTRIM(LTRIM(Data))) <> DATALENGTH(Data)

尝试:

select `ID Number`, `Data (that has the space)`, `Field Name` from tbl WHERE data like ' %' or data like '% '

我想这完全取决于您的意思,通过字段列表,下面的代码将一次执行一次。 但是,如果要提供20列的列表并进行检查,然后输出到单个列表,则将需要进行一些递归或某些复制/粘贴合并。

select ID, DATA,Field_Name
from table
where DATA like '[ ]%'
        or DATA like '%[ ]'

除了ID,以下内容将为您提供所需的一切。 我不确定这是列名还是行名或Auto_ID或其他名称。 如果每个表中的表都不同,则有些棘手,但是如果表中的表相同,则应该可以修改以下内容。

Declare @Tables Varchar(8000)
        ,@Columns Varchar(8000)
        ,@Dynamic_SQL NVARCHAR(MAX)


IF OBJECT_ID('tempdb..#TempTables') IS NOT NULL
    DROP TABLE #TempTables

Create Table #TempTables
(TableNames Varchar(8000))

Insert Into #TempTables
Values ('Finance_LTD_Summary_Data')
        ,('Golf_TX_TMP')


IF OBJECT_ID('tempdb..#Results') IS NOT NULL
    DROP TABLE #Results

Create Table #Results
(TableNames Varchar(8000)
    ,ID Varchar(8000)
    ,Data Varchar(8000)
    ,FieldName Varchar(8000))

IF OBJECT_ID('tempdb..#Fields') IS NOT NULL
    DROP TABLE #Fields

Create Table #Fields
(COLUMN_Name Varchar(8000))

DECLARE KeyTables_cursor CURSOR FOR 
        SELECT TableNames
            from #TempTables

        OPEN KeyTables_cursor

        FETCH NEXT FROM KeyTables_cursor
        INTO @Tables


        WHILE @@fetch_status = 0
        BEGIN   


                Set @Dynamic_SQL = 'truncate table #Fields

                                    Insert into #Fields(COlumn_Name)
                                    select COLUMN_NAME
                                    from INFORMATION_SCHEMA.COLUMNS
                                    where TABLE_NAME =''' + @Tables + ''''

                print convert(text,@Dynamic_Sql)                        
                exec sp_executesql @Dynamic_Sql


                DECLARE KeyColumns_cursor CURSOR FOR 
                SELECT COLUMN_Name
                    from #Fields

                OPEN KeyColumns_cursor

                FETCH NEXT FROM KeyColumns_cursor
                INTO @Columns


                WHILE @@fetch_status = 0
                BEGIN   

                    Set @Dynamic_SQL = 'Insert into #results(TableNames,Data,FieldName)
                                            Select ''' + @Tables + ''' , ' + @Columns + ' , ''' + @Columns + ''' 
                                                From ' + @Tables + '
                                                Where ' + @Columns + ' like ''[ ]%''
                                                        or ' + @Columns + ' like ''%[ ]'''


                    print convert(text,@Dynamic_Sql)
                    exec sp_executesql @Dynamic_Sql

                FETCH NEXT FROM KeyColumns_cursor into @Columns

                END

                CLOSE KeyColumns_cursor;
                DEALLOCATE KeyColumns_cursor;   


        FETCH NEXT FROM KeyTables_cursor into @Tables

        END

        CLOSE KeyTables_cursor;
        DEALLOCATE KeyTables_cursor;

试试这个..这对我有用..它将找到以特殊字符开头的记录

SELECT * FROM ITEM_MASTER WHERE BARCODE LIKE '[^0-9a-zA-Z ]%'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM