TRY_CONVERT()
はありません。 または TRY_CAST()
ただし、XML の内部キャストを使用して null 許容型に変換できます。
これを試してください
DECLARE @tbl TABLE(SomeInt VARCHAR(100)); INSERT INTO @tbl VALUES('123') ,('blah') --bad data SELECT t.* ,CAST('' AS XML).value('sql:column("t.SomeInt") cast as xs:int?','int') FROM @tbl t;
プレ>ハックのビット...しかし、何とか美しい;-)
説明
CAST('' AS XML)
実際の XML を取得するためのトリックにすぎません XML のネイティブ メソッドを使用するため。sql:column()
XQuery
です - セットの列をXQuery
に含めることができる関数 (sql:variable
を使用) 変数用)
cast as xs:int?
文字列を int-value として解析しようとし、これが機能しない場合は NULL を返します。制限は次のとおりです。これは常にシステムのデフォルトを使用します (
TRY_CAST
と同様) )。TRY_CONVERT
を使用 3 番目のパラメーターを使用すると、出力をより細かく制御できます...ヒント:
XQuery/Xpath
厳密に大文字と小文字が区別されます。xs:dateTime?
があります。 、ただし、xs:datetime
でエラーが発生します ...