私がスキーマを制御できないテーブルには、varchar(50)として定義された列が含まれ、一意の識別子を「a89b1acd95016ae6b9c8aabb07da2010」の形式で格納します(ハイフンなし)。
.Net Guidに渡すために、これらをSQLのuniqueidentifiersに変換したいと思います。ただし、次のクエリ行は機能しません。
select cast('a89b1acd95016ae6b9c8aabb07da2010' as uniqueidentifier)
select convert(uniqueidentifier, 'a89b1acd95016ae6b9c8aabb07da2010')
結果:
メッセージ8169、レベル16、状態2、行1 文字列からuniqueidentifierへの変換に失敗しました。
ハイフン付きのuniqueidentifierを使用した同じクエリは正常に機能しますが、データはその形式で保存されません。
これらの文字列をSQLのuniqueidentifiersに変換する別の(効率的な)方法はありますか?-.Netコードでそれをしたくありません。
文字と数字の列だけは実際には有効なGUID表現ではありません。Quassnoiが彼の回答で示したように、文字列解析の魔法に頼らなければなりません。
—
marc_s 2009