带有算术运算符的Oracle

ma8fv8wu  于 2022-10-04  发布在  Oracle
关注(0)|答案(2)|浏览(160)

如何不允许在Oracle DWH中的特定列中使用算术运算符?

用户不得使用此用法:

SELECT id, customername FROM customers WHERE id = 10+5

SELECT id, customername FROM customers WHERE id = '1'+'5'

SELECT id, customername FROM customers WHERE id = '1' || '5'

用户必须使用此样式:

SELECT id, customername FROM customers WHERE id = 15

谢谢。

i86rm4rw

i86rm4rw1#

假设您的id列是一个整数,则必须将其与整型文字、整型列或其结果为整型的其他表达式进行比较。您的当前版本:

SELECT id, customername FROM customers WHERE id = '1' || '5'

可以通过使用TO_NUMBER()强制转换为整数来使其工作:

SELECT id, customername FROM customers WHERE id = TO_NUMBER('1' || '5')
3qpi33ja

3qpi33ja2#

使用绑定参数:

SELECT id, customername FROM customers WHERE id = :v_id;

然后,用户可以使用您正在使用的任何前端接口指定绑定变量:v_id的值,它只能是单个值,如15或单个字符串'10+5'(它是包含字符10+5的单个标量字符串值,不会作为数值运算进行计算)。

相关问题