1

2 つのテーブルを結合しようとしていますが、テーブルの 1 つのデータ要素に小数があり、2 つのテーブルを結合するときに小数を使用したくありません。たとえば、Customer テーブルのキーは 405.02 ですが、他のテーブルでは 405 です。したがって、参加するときは、ピリオドの前のすべてを使用したいだけです。どうすればいいですか?ありがとうここに私のコードです

 update mytable
 set myField = 'xxx'
 from CustomerTbl
 where CustomerTbl.mainKey = mytable.mainKey
4

2 に答える 2

2

フィールドが varchar の場合、これを使用できます。

SUBSTRING(CustomerTbl.mainKey, 0, CHARINDEX('.', CustomerTbl.mainKey))

10 進数/浮動小数点の場合は、最初に変換する必要があります。

SUBSTRING(CAST(CustomerTbl.mainKey AS VARCHAR(10)), 0, CHARINDEX('.', CAST(CustomerTbl.mainKey AS VARCHAR(10))))

mytable.mainKeyまた、WHERE 句でCAST する必要があります。

編集: SQLFiddle デモ

update mytable
 set myField = 'xxx'
 from CustomerTbl
 where SUBSTRING(CAST(CustomerTbl.mainKey AS VARCHAR(20)), 0, CHARINDEX('.', CAST(CustomerTbl.mainKey AS VARCHAR(20)))) = CAST(mytable.mainKey AS VARCHAR(20))
于 2013-09-16T19:27:38.730 に答える
0
UPDATE mytable
SET 
   myField = 'xxx'
FROM 
   CustomerTbl ct
INNER JOIN (
    SELECT leftKey=floor(mainKey)
    FROM mytable
) as upd on upd.leftKey = ct.mainKey

Floor() 関数が利用可能な場合は、結合するための小数の左側を提供する必要があります。

于 2013-09-16T19:24:56.360 に答える