我正在尝试连接两个表,但其中一个表中的数据元素有十进制,我不想在加入两个表时使用小数,因为它们并不多。例如,Customer表中的键是405.02,但在另一个表中它是405.所以在加入时,我只想在句号之前使用所有内容。我该怎么做?谢谢 这是我的代码
update mytable
set myField = 'xxx'
from CustomerTbl
where CustomerTbl.mainKey = mytable.mainKey
答案 0 :(得分:2)
如果您的字段是varchar,则可以使用:
SUBSTRING(CustomerTbl.mainKey, 0, CHARINDEX('.', CustomerTbl.mainKey))
如果是十进制/浮点数,则必须先转换它:
SUBSTRING(CAST(CustomerTbl.mainKey AS VARCHAR(10)), 0, CHARINDEX('.', CAST(CustomerTbl.mainKey AS VARCHAR(10))))
您还需要在WHERE子句中使用CAST mytable.mainKey
。
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))
答案 1 :(得分: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()函数(如果可用)应该为您提供加入小数的左侧。