다음을 통해 공유


시스템 함수 사용

시스템 함수를 사용하면 시스템 테이블에 직접 액세스하지 않고도 SQL Server 시스템 테이블의 정보를 액세스할 수 있습니다.

일부 Transact-SQL 시스템 함수의 이름은 @@ 기호로 시작합니다. 이전 버전의 SQL Server에서는 @@ 함수가 전역 변수로 간주되었지만 @@ 함수는 변수가 아니며 변수처럼 동작하지 않습니다. @@ 함수는 시스템 함수이며 구문 사용법이 함수 규칙을 따릅니다.

다음 데이터베이스, 호스트, 개체, 로그인 및 사용자에 대한 각 시스템 함수 쌍은 ID(식별자)를 지정하면 이름을 반환하고 이름을 지정하면 ID를 반환합니다.

  • DB_ID 및 DB_NAME

  • HOST_ID 및 HOST_NAME

  • OBJECT_ID 및 OBJECT_NAME

  • SUSER_ID 및 SUSER_NAME(또는 SUSER_SID 및 SUSER_SNAME)

  • USER_ID 및 USER_NAME

예를 들어 데이터베이스 ID를 가져오려면 sysobjects 테이블에서 SELECT를 실행하는 대신 DB_ID 함수를 사용합니다.

다음 예에서는 SQL Server 인증을 사용하여 로그온한 현재 사용자의 사용자 이름을 검색하는 방법을 보여 줍니다.

SELECT SUSER_NAME();

다음 함수들도 위 함수와 비슷하지만 보조 쌍으로 나타나지 않으며 둘 이상의 입력 매개 변수를 사용합니다.

  • COL_LENGTH

    열에 저장된 각 문자열의 길이가 아닌 열의 길이를 반환합니다. DATALENGTH 함수를 사용하여 특정 값의 총 문자 수를 확인할 수 있습니다.

    다음 예에서는 Employees 테이블에 있는 LastName 열의 열 길이와 데이터 길이를 반환합니다.

    SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, 
       DATALENGTH(LastName) AS DataLength
    FROM Employees
    WHERE EmployeeID > 6;
    
  • COL_NAME

    열 이름을 반환합니다.

  • INDEX_COL

    인덱스 열 이름을 반환합니다.

시스템 테이블을 직접 쿼리하지 않고 시스템 함수, 정보 스키마 뷰 또는 시스템 저장 프로시저를 사용하여 시스템 정보를 얻는 것이 좋습니다. 시스템 테이블은 SQL Server 버전에 따라 크게 달라질 수 있습니다.