我有一个Pro*C代码,可以连接到Oracle数据库并根据需要运行SQL查询。一个简单的SQL查询,如下所示:
SELECT A, B FROM TBL1 WHERE A = 'a'
在TBL1中,A被定义为VARCHAR2(30),而B是数字(4,2)。我的Pro*c版本是Pro*C/C++: Release 11.2.0.3.0,我使用的是GNU gcc家族的编译器g++版本2.95.3。Oracle文档()指出
if you SELECT or FETCH a null into a host variable that has no indicator, Oracle
我正在尝试编写一个简单地选择所有非空名称的查询。以下两个查询都不返回任何结果:
SELECT name FROM MyTable WHERE name != '';
SELECT name FROM MyTable WHERE name = '';
对于上下文,这两个查询都会返回结果:
SELECT name FROM MyTable WHERE name != 'a';
SELECT name FROM MyTable WHERE name IS NOT NULL;
我在某处读到,在oracle中,空字符串等同于NULL,但我仍然不
在group-by子句中使用char-cast会产生意想不到的结果:
select cast(col as char(2)) from (
select 'Abc' as col from dual
union all
select 'Abc' as col from dual
) group by cast(col as char(10));
结果是'Abc ' (10个字符长)。直观地,我希望Oracle返回以下内容之一:
一个错误:‘非组-按表达式’,因为group-by子句是另一个选择子句。
长度为2
SELECT PRODESCRIPTION.PDC_DESC,PRODESCRIPTION.PD_CODE
FROM BILLDETL,BILLMAST,PRODESCRIPTION
WHERE BILLDETL.BMC_SLNO=BILLMAST.BMC_SLNO
AND PRODESCRIPTION.PD_CODE=BILLDETL.PD_CODE
AND BILLMAST.PT_NO='" + hospitalNo + "'
AND BILLDETL.ORIGINAL_OUCODE='L002'
AND TO_D
我正在尝试将Oracle (PLSQL)代码转换为使用SQL Server 2012数据库。我正在转换Oracle NVL 2函数。我在SQL中看到错误,isNULL需要2个参数。
我尝试转换的Oracle是:
CASE WHEN LTrim(Rtrim(appointtype1)) in ('PRO','NOA')
THEN Nvl2(d.phonearea,To_Char(d.phonearea)||'/','')||' '||SubStr(To_Char(d.phonenbr ),1,3)||&
因此,我试图将数据保存到Oracle数据库中。我有一根绳子:
Väste
(某个州的名称)。
当我对它执行.length()时,我得到5,但是当我将它保存到数据库时,我得到:
ORA-12899: value too large for column "dude"."POST_ADR"."STATE_CD" (actual: 6, maximum: 5)
那我怎么得到“神谕”长度呢?
如何获取列中值的实际长度?
我的(oracle) sql命令返回可以插入到列中的值的最大长度,而不是值的实际长度。
如何解决这个问题?
SQL> SELECT typ, length(t1.typ)
FROM AUTA_VIEW t1;
TYP LENGTH(T1.TYP)
---------- --------------
BMW 10
BMW 10
BMW 10
Ferrari 10
BMW