복붙노트

[SQL] 동적 SQL 쿼리에서 열을 선택

SQL

동적 SQL 쿼리에서 열을 선택

내가 코드와 나는 다음과 같은 변수 이름을 사용하여 선택하려고 데이터베이스 필드 이름 호출이 있습니다

Declare @var1 = [Code]

(SELECT @var1
 FROM [VoucherType]
 WHERE [DeletedBy] IS NULL
 AND [AutoID] = 1)

분명히, SQL은 var1에 필드 이름 [코드] 대신의 선택없이 또는 if 문 가능성이 문자열로 인식되고 @ 내가 그런 방법으로 그것을 할 수있는 방법을 문자열이 아니라 내 데이터베이스 분야 등이 var1 @ 해석합니다.

해결법

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

    1.이 시도:

    이 시도:

    DECLARE @var1 VARCHAR(20)
    DECLARE @sql VARCHAR(255)
    
    SET @var1 = 'Code'
    SET @sql = 'select ' + @var1 + ' from [VoucherType] where [DeletedBy] is null and [AutoID] = 1'
    
    EXEC sp_executesql @sql
    

    당신은 동적 쿼리를 구성해야하고, sp_executesql을을 사용하여 실행할 수 있습니다

    사물의 '동적'측면에 더 추가하려면 저장 프로 시저를 사용합니다. 예를 들어 여기를 참조하십시오 :

    http://www.marten-online.com/database/execute-dynamic-sql-in-mssql.html

    당신은 마이크로 소프트 SQL 서버를 사용하는 경우 그입니다 ...

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

    2.당신은 동적 SQL을 사용해야합니다.

    당신은 동적 SQL을 사용해야합니다.

    declare @ColName varchar(128)
    
    declare @sql varchar(4000)
    
    Set @ColName='Code';
    
    select @sql = 'SELECT '+@ColName+'
      FROM [VoucherType]
     WHERE [DeletedBy] IS NULL
     AND [AutoID] = 1'
      exec sp_executesql @sql
    go
    

    이 게시물이 도움이 될 수 있습니다

    변수에 이름에서 테이블을 액세스

    SQL : 변수에 따라 선택 동적 열 이름

    문안 인사

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

    3.당신은 SELECT 문에서 같은 변수를 사용할 수 없습니다.

    당신은 SELECT 문에서 같은 변수를 사용할 수 없습니다.

    당신은 동적 SQL을 만들어야합니다.

    당신은 당신의 RDBMS를 지정하지 않지만, SQL 서버에서 당신은 sp_executesql을 (바람직) 또는 EXEC을 사용

    Declare @var1 varchar(100)
    Declare @sql varchar(1000)
    
    SET @var1 = '[Code]' 
    SET @sql = ' select ' + @var1 + ' from [VoucherType]' +
               ' where [DeletedBy] is null and [AutoID] = 1'
    
    EXEC sp_executesql @sql
    

    읽으십시오 : 저주 및 동적 SQL의 축복을

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

    4.코드 아래에 시도하십시오 :

    코드 아래에 시도하십시오 :

    VAR1 VARCHAR DECLARE @ (50)

    SET @var1 = '[Code]'
    
    EXEC ('SELECT ' + @var1 + ' FROM [VoucherType]  
           WHERE [DeletedBy] IS NULL AND [AutoID] = 1 ')
    
  5. from https://stackoverflow.com/questions/8454671/dynamically-choose-column-in-sql-query by cc-by-sa and MIT license