我正在尝试加入两个表,但其中一个表中的数据元素有小数点,我不想在加入两个表时使用小数点,因为它们不多。例如,客户表中的键是 405.02,但在另一个表中是 405。所以在加入时,我只想使用期间之前的所有内容。我该怎么做?谢谢这是我的代码
update mytable
set myField = 'xxx'
from CustomerTbl
where CustomerTbl.mainKey = mytable.mainKey
我正在尝试加入两个表,但其中一个表中的数据元素有小数点,我不想在加入两个表时使用小数点,因为它们不多。例如,客户表中的键是 405.02,但在另一个表中是 405。所以在加入时,我只想使用期间之前的所有内容。我该怎么做?谢谢这是我的代码
update mytable
set myField = 'xxx'
from CustomerTbl
where CustomerTbl.mainKey = mytable.mainKey
如果你的字段是 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))
UPDATE mytable
SET
myField = 'xxx'
FROM
CustomerTbl ct
INNER JOIN (
SELECT leftKey=floor(mainKey)
FROM mytable
) as upd on upd.leftKey = ct.mainKey
Floor() 函数(如果可用)应该为您提供小数点的左侧以供加入。