>
내가 PARSENAME 를 사용할 때  저장 프로 시저의 함수, 때로는 올바른 값을 반환하고 때로는 NULL 를 반환  값. 이유가 무엇인지 여기에서 조금 혼란 스럽습니까?

SELECT parsename(Replace('the big bang Theory',' ','.'),4)

  • 답변 # 1

    와이즈 비즈 와이즈 비즈      

    object_piece 반환 할 객체 부분입니다. object_piece는 유형입니다   int이며 다음 값을 가질 수 있습니다. 1 = 개체 이름 2 = 스키마 이름 3 =   데이터베이스 이름 4 = 서버 이름

    PARSENAME (Transact-SQL) Returns the specified part of an object name. The parts of an object that can be retrieved are the object name, owner name, database name, and server name.

    PARSENAME ( 'object_name' , object_piece ) Arguments 'object_name' Is the name of the object for which to retrieve the specified object part. object_name is sysname. This parameter is an optionally-qualified object name. If all parts of the object name are qualified, this name can have four parts: the server name, the

  • 답변 # 2

    첫째

    database name, the owner name, and the object name.

      SELECT PARSENAME('[Server].database.schema.table', 1) AS 'Object Name'; SELECT PARSENAME('[Server].database.schema.table', 2) AS 'Schema Name'; SELECT PARSENAME('[Server].database.schema.table', 3) AS 'Database Name'; SELECT PARSENAME('[Server].database.schema.table', 4) AS 'Server Name'; SELECT PARSENAME('database..table', 1) AS 'Object Name'; SELECT PARSENAME('database..table', 2) AS 'Schema Name'; -- will return NULL SELECT PARSENAME('database..table', 3) AS 'Database Name'; SELECT PARSENAME('database..table', 4) AS 'Server Name'; -- will return NULL 를 구문 분석하기위한 것입니다   PARSENAME() 유형의 .

    가능한 시나리오 :

    object_name
    
    

    Rextester 데모

    SYSNAME 를 명심하십시오  유효한 object_name이 아닙니다. 또한 SELECT c, PARSENAME(REPLACE(sub.c, ' ', '.'), 4) AS part FROM ( SELECT 'a b c d e' -- more than 4 parts UNION ALL SELECT 'a b c d' UNION ALL SELECT REPLICATE('a', 129) + ' b c d' -- too long part UNION ALL SELECT REPLICATE('a', 128) + ' b c d' UNION ALL SELECT 'a b c d' -- more than one space UNION ALL SELECT CAST('a b c d' AS CHAR(30)) -- padded with spaces )sub(c)   a.b.c.d.e 의 별칭입니다.  더 긴 부분은 유효하지 않습니다.

    중요한 점은 다른 문자열을 사용하여 다른 작업을 수행 할 때 오류가 발생할 수 있다는 것입니다.

    SYSNAME

  • 이전 android - SQLiteOpenHelper onCreate 메소드가 호출되지 않았습니다
  • 다음 c# - EPPLUS는 인서트에서 문자열을 복제합니다