1. oracle的sql语句where语句中nvl函数的第一个参数可以使用宿主变量不,如where 字段名1=nvl(:va,字段名1)
看你的问题,字段1=nvl(:va,字段1),是没有问题的
select R.REGION_NAME REGION_NAME, R.REGION_ID HID_ID, SUM(G.BADBILL_FEE) sum_fee from SYS_REGION R, GCI_BADBILL_SUM G where G.city_id = R.REGION_ID and R.SUP_REGION_ID = ? and G.badfee_type_id = nvl(:badfeeType,G.badfee_type_id) and G.badfee_level_id = nvl(:badfeeLevel,G.badfee_level_id) and G.grp_degree_id = nvl(:grpDegree,G.grp_degree_id) 但我在java程序里将宿主变量值传入,出现索引丢失参数错误
检查一下,
1. 检查表sys_region、gci_badbill_sum的索引状态
2. 传入的如果是字符串变量,是否有引号''
3. 如果有必要,贴一下具体的错误,是ORA的还是java的,有的话都贴一下
2. 数据库中的 NVL() 方法怎么用
1、nvl(exp1,exp2);作用是如果表达式exp1为空则返回exp2表达式,如果exp1表达式不为空则返回exp1表达式。
3. sql语句中有个函数nvl,它的全称是什么
空值转换函数
一NVL函数是一个空值转换函数
NVL(表达式1,表达式2)
如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
对数字型: NVL( comm,0);
对字符型 NVL( TO_CHAR(comm), 'No Commission')
对日期型 NVL(hiredate,' 31-DEC-99')
例子:
select ename,NVL(TO_char(comm), ename||' is not a salesperson!') AS COMMISSION
from emp
4. SQL中,使用NVL函数,报错:ora
update abmi_item_storage_all t
set t.amount = nvl((select to_number(nvL(a.function_text, 0))
from abmi_item_all a
where a.function_text is not null
and a.item_id = t.item_id
and a.item_code = t.item_code
and a.item_type = 7
and a.org_id = t.org_id),
0)
where (select item_type from abmi_item_all where item_id = t.item_id) = 7
and t.item_code not like 'M-%'
and t.org_id = '602'
and t.period_code = 'GHCD-JAN-11'
如果org_id字段类型为字符型的话,602要加引号。
5. sqlserver有没有类似oracle中nvl这样的函数
sqlserver中的isnull跟oracle中的nvl相似。
ISNULL
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
返回类型
返回与 check_expression 相同的类型。
注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
6. SQL中,使用NVL函数,报错:ora-01722:无效数字
nvl 是用来 当数据库字段为空时,强制指定栏位的值。 如nvl(abc,0) 表示abc为空的时候,返回值为0 ,可以先用select 的方式把影响的行查出来,看是否where 语句错误,如果没有错,再检查update 部分的语句是否不正确,很简单就能排查问题的 。
7. sql语言中的concat函数和nvl函数二者有什么区别
完全不同的两个函数,concat函数是把参数转化成字符串然后连接起来返回,如果有参数中有一个是Null的话就返回null,concat('A','B')返回结果就是'AB',Nvl函数是返回Null的替代值,有两个参数,例如 Nvl(Parameter1,Parameter2),如果Parameter1是Null,那就返回Parameter2,如果Parameter1不是Null,那就返回Parameter1。还有一个类似的函数是Nvl2,Nvl2函数有3 个参数,例如Nvl2(Parameter1,Parameter2,Parameter3),如果Parameter1不为null返回Parameter2,否则返回Parameter3
8. 在sql语句中nvl是什么意思
NVL 是一个函数, 后面跟 2 个参数
返回值:
如果第一个参数 非空, 那么直接返回第一个参数, 忽略第二个参数。
如果第一个参数 是 空( IS NULL), 那么返回第二个参数。
SQL> SELECT
2 NVL(sale_item, 'ALL') AS item,
3 SUM(sale_money) AS money
4 FROM
5 sale_report
6 GROUP BY
7 ROLLUP(sale_item);
ITEM MONEY
------ ----------
A 733285
B 2382
C 5738
ALL 741405
9. sql问题在写sum语句的时候关于nvl函数
按常理是先判断AA字段是否为空,如果是空就是0
所以应该是sum(nvl(aa,0))
前面那个这样写也是正确的,但是没什么意义
先加总所有的,如果全都是空就是0
10. 在oracle数据库中nvl()是什么函数
NVL(exp1,exp2),如果exp1的计算结果为null值,则NVL()返回exp2。如果exp1的计算结果不是null值,则返回exp1。
使用样例如下:
1、创建测试表,
create table test_nvl(value varchar2(50));