ホームページ > データベース > mysql チュートリアル > 区切り文字を使用して T-SQL で文字列を安全に分割する方法

区切り文字を使用して T-SQL で文字列を安全に分割する方法

Linda Hamilton
リリース: 2025-01-08 09:52:41
オリジナル
346 人が閲覧しました

How to Safely Split Strings in T-SQL Using Delimiters?

T-SQL の区切り文字に基づいて文字列を分割します

質問:

SQL で、SUBSTRING を使用して区切り文字に基づいて文字列を分割すると、区切り文字が存在しない場合にエラーが発生することがあります。以下のコードはこれを示しています:

<code class="language-sql">SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
       SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM   MyTable</code>
ログイン後にコピー

区切り文字のない行が見つかると、「LEFT 関数または SUBSTRING 関数に渡された長さの引数が無効です。」というエラーがスローされます。

解決策:

この問題を解決するには、次のように SUBSTRING 関数で CASE ステートメントを使用します。

<code class="language-sql">SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn)
            ELSE CHARINDEX('/', myColumn) - 1
            END) AS FirstName
    ,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn) + 1
            ELSE CHARINDEX('/', myColumn) + 1
            END, 1000) AS LastName
FROM MyTable</code>
ログイン後にコピー

この更新されたコードは、CHARINDEX を使用して区切り文字の位置を評価します。区切り文字が見つからない場合 (CHARINDEX が 0 を返す)、CASE ステートメントは文字列の長さを使用して、文字列全体が名前として扱われるようにします。区切り文字が存在する場合、区切り文字の後の最初の文字の位置が姓の開始インデックスとして計算されます。

以上が区切り文字を使用して T-SQL で文字列を安全に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート