ホームページ > データベース > mysql チュートリアル > 非数値を処理しながら、T-SQL で NVARCHAR 文字列を整数に安全にキャストするにはどうすればよいですか?

非数値を処理しながら、T-SQL で NVARCHAR 文字列を整数に安全にキャストするにはどうすればよいですか?

DDD
リリース: 2024-12-28 08:12:13
オリジナル
602 人が閲覧しました

How Can I Safely Cast NVARCHAR Strings to Integers in T-SQL, Handling Non-Numeric Values?

T-SQL 変換: デフォルト値または NULL 処理を使用して文字列を整数にキャストする

T-SQL では、nvarchar 文字列を整数に変換することがデータ操作にとって重要です。ただし、数字以外の文字が含まれる場合、そのような変換は失敗する可能性があります。これにより、変換エラーを適切に処理する必要性が生じます。

解決策

CASE WHEN 式は、このシナリオを処理するための堅牢なメカニズムを提供します。構文は次のとおりです。

CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
ログイン後にコピー

その仕組みは次のとおりです。

  • ISNUMERIC(): この関数は、nvarchar 文字列 @text が表すかどうかを評価します。有効な数値。 1 (true) を返す場合、文字列は数値です。
  • CAST(): ISNUMERIC() が true を返す場合、文字列は CAST() を使用して整数にキャストされます。それ以外の場合、結果は NULL に設定されます。

このアプローチにより、文字列から整数への変換が成功した場合に、正しい整数値が返されることが保証されます。ただし、数字以外の文字が原因で変換が失敗した場合は、NULL 値が返されます。

サンプル コード

DECLARE @text AS NVARCHAR(10)

-- Numeric string
SET @text = '100'
SELECT @text, CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END

-- Non-numeric string
SET @text = 'XXX'
SELECT @text, CASE WHEN ISNUMERIC(@text) = 1 THEN CAST(@text AS INT) ELSE NULL END
ログイン後にコピー

制限事項

ISNUMERIC() 関数は、数値をチェックする便利な方法ですが、その点に注意することが重要です。制限事項:

  • 通貨記号 ($)、小数点区切り文字 (,)、千の区切り文字 (.)、および算術記号 (および -) を含む文字列に対して true を返します。
  • 整数と他の数値データ型 (次のような) を区別しません。

これらの制限にもかかわらず、ISNUMERIC() および CAST() を使用した CASE WHEN は、文字列を整数にキャストし、T-SQL で数値以外の場合を処理するための実用的なソリューションを提供します。

以上が非数値を処理しながら、T-SQL で NVARCHAR 文字列を整数に安全にキャストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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