2

newid()出力を 10 進数にキャストまたは変換したい(必要最小限のスペースで)

これまでのところ、私はこれをしました:

SELECT  CAST( '0x'+REPLACE(CAST(NEWID() AS VARCHAR(50)), '-', '' ) AS DECIMAL(38,0) )

しかし、私はこのエラーが発生しています:

データ型 varchar から数値への変換中にエラーが発生しました。

たくさん検索しましたが、イライラして、助けを求めてここに来ました。

よろしくお願いします。


更新: decimal(8,0) が decimal(38,0) になり、それでも同じエラーが発生します。

4

1 に答える 1

5

これはxy 問題です。

GUID に使用する正しいデータ型はuniqueidentifier. 自分で数値データ型に変換する必要はありません。

は、表示される文字列ではuniqueidentifierなく、16 バイトのバイナリ形式で格納されます。char(36)

于 2013-03-11T10:40:04.843 に答える