ストアドプロシージャでPARSENAME
関数を使用すると、ときどき正しい値が返され、時にはNULL
という値が返されます。私はここで少し混乱しているのでしょうか?PARSENAME関数の動作がwierd
SELECT parsename(Replace('the big bang Theory',' ','.'),4)
ストアドプロシージャでPARSENAME
関数を使用すると、ときどき正しい値が返され、時にはNULL
という値が返されます。私はここで少し混乱しているのでしょうか?PARSENAME関数の動作がwierd
SELECT parsename(Replace('the big bang Theory',' ','.'),4)
すべてPARSENAME()
の最初には、タイプ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
が有効object_nameのではないことに注意してください。またSYSNAME
はNVARCHAR(128)
のエイリアスで、長い部分は無効です。
これは、別のジョブ(ユーザーストリングを解析する)を使用すると、エラーが発生する可能性があります。
PARSENAME(Transact-SQL)オブジェクト名の指定された部分を返します。 取得できるオブジェクトの部分は、オブジェクト名、 所有者名、データベース名、およびサーバー名です。
PARSENAME( 'object_name'、object_piece)引数 'object_name' 指定されたオブジェクトを取得するオブジェクトの名前です。 部分です。 object_nameはsysnameです。このパラメーターは、オプションで修飾されたオブジェクト名 です。サーバー名、
データベース名、所有者名、およびオブジェクト名:オブジェクト名のすべての部分が 修飾された場合は、この名前は、次の4つの部分を持つことができます。
object_pieceオブジェクト部分が返されますか? object_pieceはタイプ int型のものであり、これらの値を持つことができます:1 =オブジェクト名2 =スキーマ名3 = データベース名4 =サーバー名。これは、すべての実行時に「」正常に返さ
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
を。データに2つのスペースがあるかどうかをソースデータで確認してください。 –
この方法を正しく使用しているかどうかわからない場合は、例を参照してください。https://docs.microsoft.com/en-us/sql/t-sql/functions/parsename-transact-sql – Tanner