将未知格式转换为字符串Oracle sql
我有一个查询,我正在where将未知格式转换为字符串Oracle sql,sql,oracle,4d-database,Sql,Oracle,4d Database,我有一个查询,我正在whereCOURSE\u NUMBER子句中检查字符串 select * from CC cc inner join AB_COURSE_ENROLL ab on cc.DCID=ab.LOCAL_ID where cc.STUDENTID=34700 and cc.COURSE_NUMBER IN (TO_CHAR(FOD1050)); 问题是,如果我将FOD1050放在单引号中,查询就会工作,但在我的项目中,我不能将FOD1050放在单引号或双引号中。有没有其他方法告
COURSE\u NUMBER
子句中检查字符串
select * from CC cc inner join AB_COURSE_ENROLL ab on cc.DCID=ab.LOCAL_ID where cc.STUDENTID=34700 and cc.COURSE_NUMBER IN (TO_CHAR(FOD1050));
问题是,如果我将FOD1050
放在单引号中,查询就会工作,但在我的项目中,我不能将FOD1050放在单引号或双引号中。有没有其他方法告诉编译器传入值是字符串?
我正在使用Oracle如果需要硬编码的值,可以将其构建为单个字符的串联,由其ASCII代码标识 例如:
SQL> select chr(70) || chr(79) || chr(68) || chr(49) || chr(48) || chr(53) || chr(48) as str
2 from dual;
STR
-------
FOD1050
要了解您需要的代码,DUMP
非常有用:
SQL> select dump('FOD1050') from dual;
DUMP('FOD1050')
----------------------------------
Typ=96 Len=7: 70,79,68,49,48,53,48
如果FOD1050是字符串值,则需要将其括在单引号中。我不明白你为什么说“但在我的项目中,我不能用单引号或双引号将FOD1050括起来”——为什么你不能?是因为您需要能够将任何字符串值传递到查询中,例如通过绑定变量?如果是这样的话,
和cc.course\u number in(:course\u number)
应该可以做到这一点。它就像([courses]DCID)这个和([courses]DCID)对应的FOD1050没有引号,如果添加引号“~([courses]DCID)”,表达式没有返回任何东西,可能会出错。我不明白~([courses]DCID)
的意思。这是一个值吗?参数?变量?专栏?它不是一个有效的标识符名称,因此如果您试图将其引用为一个标识符名称(例如变量/列/等),则需要将其括在双引号中。您的问题确实不清楚,但是-您最好更新您的问题(或者,在这一点上,提出一个新问题),并提供更多信息,例如表结构、样本输入数据和预期输出。Hi@Aleksej它将不是硬编码值,这个值可以是任何东西,那么这个值来自哪里呢?它是一个变量吗?是的,它是一个变量,来自另一个表,我不明白。如果您有一个变量,为什么需要引号?请发布代码的相关部分,以澄清您的需求。它类似于([courses]DCID)此,([courses]DCID)对应于FOD1050,不带引号,如果添加引号“~([courses]DCID)”,则表达式不会返回任何内容,可能会出错