1

我正在尝试加入两个表,但其中一个表中的数据元素有小数点,我不想在加入两个表时使用小数点,因为它们不多。例如,客户表中的键是 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))

如果是小数/浮点数,则必须先转换:

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 回答