2015-06-12 4 views
1

Я ищу SQL-запрос (используя SQL 2008) для поиска различных полей, которые я указываю (или даже всех полей в конкретных таблицах) для ведущих или конечных пробелов. Я хотел бы вывод, что две колонки со следующими данными:Показать все записи с ведущими или конечными пробелами

идентификационный номер, данные (что имеет место), поле Имя

Спасибо за помощь, как обычно!

+1

Вы пробовали данные типа «%» или данные типа «%»? –

+0

У меня есть, но я хочу сделать это для нескольких полей одновременно – user3513237

+0

Этот вопрос отличается от того, что вы задаете в комментарии. Я бы предположил, что вы задаете * другой вопрос с образцами данных и желаемыми результатами, которые лучше всего представляют собой то, что вы действительно ищете. Если вы измените этот вопрос, вы, скорее всего, аннулируете уже предоставленные ответы, и это может привести к занижению. Попробуйте задать другой вопрос. –

ответ

1

Try:

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

Вы можете использовать DATALENGTH

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

Я предполагаю, что это зависит именно то, что вы имеете в виду, по списку полей, приведенный ниже код будет делать по одному. Однако, если вы хотите предоставить список из 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; 
+0

Я хотел бы предоставить список имен полей, поэтому мне не нужно иметь столько запросов – user3513237

Смежные вопросы