SQL (NZ) 如何在数字列中查找小数
SQL (NZ) How to find decimals in a numeric column
我正在尝试将一些 SQL 放在一起以根据 Table_1 的值更新 Table_2,但要注意的是,只有当值是小数而不是小数时一个整数。
Table_1 Table_2
Col_A Col_B Key Col_C Col_D Key
3.2 6 331 3 6 331
5 8 332 5 8 332
1.12 9 333 1 9 333
6 10 334 6 10 334
所以参考上面的 tables 我想做的是更新 Table 2 的 Col_C 以匹配 Col_A 基于密钥但前提是Col_A 是小数,不是整数。
我知道你可以在这种情况下进行全面更新(更新所有 table 2 以匹配 table 1)但在实际应用程序中我正在使用它,因为它不会'不工作我只需要为小数点做,只是不知道如何缩小它们的范围。 Col_A/C 是数字 (10,4)。 Col B/D 是整数。
请注意这是在 Netezza 中,不确定 NZ 是否有一些特殊的东西可以更容易地做到这一点。
这需要使用一些数学函数,特别是 floor()
:
update table_2
set . . .
from table_1
where table_2.col_C = floor(table_1.col_A) and
table_1.col_A > floor(table_1.col_A);
我正在尝试将一些 SQL 放在一起以根据 Table_1 的值更新 Table_2,但要注意的是,只有当值是小数而不是小数时一个整数。
Table_1 Table_2
Col_A Col_B Key Col_C Col_D Key
3.2 6 331 3 6 331
5 8 332 5 8 332
1.12 9 333 1 9 333
6 10 334 6 10 334
所以参考上面的 tables 我想做的是更新 Table 2 的 Col_C 以匹配 Col_A 基于密钥但前提是Col_A 是小数,不是整数。
我知道你可以在这种情况下进行全面更新(更新所有 table 2 以匹配 table 1)但在实际应用程序中我正在使用它,因为它不会'不工作我只需要为小数点做,只是不知道如何缩小它们的范围。 Col_A/C 是数字 (10,4)。 Col B/D 是整数。
请注意这是在 Netezza 中,不确定 NZ 是否有一些特殊的东西可以更容易地做到这一点。
这需要使用一些数学函数,特别是 floor()
:
update table_2
set . . .
from table_1
where table_2.col_C = floor(table_1.col_A) and
table_1.col_A > floor(table_1.col_A);