복붙노트

[SQL] 열 이름 등을 선택 SQL

SQL

열 이름 등을 선택 SQL

내가 열 이름의 A1, A2있는 테이블을 가지고 ..., b1.b2 ....

어떻게 %와 같은 열 이름을 가진 모든 사람을 선택할 수 있습니다?

해결법

  1. ==============================

    1.당신은하지 표준 SQL로 할 수 있습니다. 열 이름은 SQL 데이터처럼 취급되지 않습니다.

    당신은하지 표준 SQL로 할 수 있습니다. 열 이름은 SQL 데이터처럼 취급되지 않습니다.

    당신이 가지고있는 SQL 엔진을 사용하는 경우, 말 등 열 이름, 종류, 저장 메타 데이터 테이블 대신 해당 테이블에 선택할 수 있습니다.

  2. ==============================

    2.이렇게하면 목록을 얻을 것이다

    이렇게하면 목록을 얻을 것이다

    select * from information_schema.columns 
    where table_name='table1' and column_name like 'a%'
    

    쿼리를 만들 때 그것을 사용하려면, 당신이 뭔가를 할 수 있습니다 :

    declare @sql nvarchar(max)
    set @sql = 'select '
    select @sql = @sql + '[' + column_name +'],'
    from information_schema.columns 
    where table_name='table1' and column_name like 'a%'
    set @sql = left(@sql,len(@sql)-1) -- remove trailing comma
    set @sql = @sql + ' from table1'
    exec sp_executesql @sql
    

    위는 SQL 서버를 대상으로합니다.

  3. ==============================

    3.당신은보기 INFORMATION_SCHEMA.COLUMNS를 사용해야합니다

    당신은보기 INFORMATION_SCHEMA.COLUMNS를 사용해야합니다

    select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = my_table_name AND COLUMN_NAME like 'a%'
    

    행 인라인 당신은 PIVOT 및 실행 EXEC () 함수를 사용할 수 있습니다.

  4. ==============================

    4.이렇게하면 테이블 이름과 열 이름을 표시합니다

    이렇게하면 테이블 이름과 열 이름을 표시합니다

    select table_name,column_name from information_schema.columns
    where column_name like '%breakfast%'
    
  5. ==============================

    5.여기 당신이 원하는 정보를 표시 할 수있는 좋은 방법입니다 :

    여기 당신이 원하는 정보를 표시 할 수있는 좋은 방법입니다 :

    SELECT B.table_catalog as 'Database_Name',
             B.table_name as 'Table_Name',
            stuff((select ', ' + A.column_name
                  from INFORMATION_SCHEMA.COLUMNS A
                  where A.Table_name = B.Table_Name
                  FOR XML PATH(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)')
                  , 1, 2, '') as 'Columns'
      FROM INFORMATION_SCHEMA.COLUMNS B
      WHERE B.TABLE_NAME like '%%'
            AND B.COLUMN_NAME like '%%'
      GROUP BY B.Table_Catalog, B.Table_Name
      Order by 1 asc
    

    중 하나를 사이에 아무것도 추가 '%%'의 주요 선택의 테이블 및 / 또는 열 이름은 당신이 원하는 좁힐.

  6. ==============================

    6.

    SELECT * FROM SysColumns WHERE Name like 'a%'
    

    당신에게 열 목록을 얻을 것이다, 당신은 당신의 목표 테이블을 제한하기 위해 더 많은 필터링 할 것

    거기에서 당신은 어떤 구성 할 수 있습니다 광고를-특별 SQL

  7. ==============================

    7.Blorgbeard는 SQL 서버에 대한 좋은 대답을했다. 당신이 내 같은 MySQL 서버가있는 경우 그 다음은 이름이 몇 가지 주요 문구처럼 어디 열에서 정보를 선택할 수 있습니다. 당신은 테이블 이름, 데이터베이스 이름 및 키워드를 대체해야합니다.

    Blorgbeard는 SQL 서버에 대한 좋은 대답을했다. 당신이 내 같은 MySQL 서버가있는 경우 그 다음은 이름이 몇 가지 주요 문구처럼 어디 열에서 정보를 선택할 수 있습니다. 당신은 테이블 이름, 데이터베이스 이름 및 키워드를 대체해야합니다.

    SET @columnnames = (SELECT concat("`",GROUP_CONCAT(`COLUMN_NAME` SEPARATOR "`, `"),"`") 
    FROM `INFORMATION_SCHEMA`.`COLUMNS` 
    WHERE `TABLE_SCHEMA`='your_database' 
        AND `TABLE_NAME`='your_table'
        AND COLUMN_NAME LIKE "%keyword%");
    
    SET @burrito = CONCAT("SELECT ",@columnnames," FROM your_table");
    
    PREPARE result FROM @burrito;
    EXECUTE result;
    
  8. ==============================

    8.천재 아이디어를 @Blorgbeard 감사드립니다.

    천재 아이디어를 @Blorgbeard 감사드립니다.

    내가 그것을 편집 할 수 있도록 그런데 Blorgbeard의 쿼리는 나를 위해 작동하지 않는 :

    DECLARE @Table_Name as VARCHAR(50) SET @Table_Name = 'MyTable'          -- put here you table name
    DECLARE @Column_Like as VARCHAR(20) SET @Column_Like = '%something%'    -- put here you element
    DECLARE @sql NVARCHAR(MAX) SET @sql = 'select '
    
    SELECT @sql = @sql + '[' + sys.columns.name + '],'
    FROM sys.columns 
    JOIN sys.tables ON sys.columns.object_id = tables.object_id
    WHERE sys.columns.name like @Column_Like
    and sys.tables.name = @Table_Name
    
    SET @sql = left(@sql,len(@sql)-1) -- remove trailing comma
    SET @sql = @sql + ' from ' + @Table_Name
    
    EXEC sp_executesql @sql
    
  9. from https://stackoverflow.com/questions/5274594/sql-select-with-column-name-like by cc-by-sa and MIT license