sql >> データベース >  >> RDS >> Sqlserver

関数のパラメータとしてデータ型を渡すSQL Server 2008

    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 でエラーが発生します ...




    1. MySQLデータベースでフルネームまたはファーストネームまたはラストネームを別々の列のファーストネームとラストネームで検索する

    2. _GETurlリンクを使用してmysqlデータベースからレコードを削除します

    3. Postgres9.1でクエリの更新が遅すぎる

    4. SQLServerのチェック制約とは-SQLServer/TSQLチュートリアルパート82