【发布时间】:2017-06-23 16:25:31
【问题描述】:
在我的本地表中,我尝试检查名为 JOBNUMBER 的 Oracle 编号列是否具有存在于字符串参数中的值。从技术上讲,我将字符串作为存储过程 nvarchar2 参数传递,但为简单起见,我在下面的查询中对字符串进行了硬编码:
SELECT FIRST_NAME, JOB_NUMBER
FROM JOBTABLE
WHERE TO_CHAR(JOB_NUMBER) IN ('00052, 00048');
当 Oracle 运行上述查询时,即使 00052 是 JOB_NUMBER 表列中的数字值,它也不返回任何值。我在想它会检查 JOB_NUMBER 中的整个字符串 ('00052, 00048') 并且找不到它,所以它不返回任何值。该字符串每次都会包含不同的值,并且该字符串中会有多个数字(字符串类型)。
有人知道怎么做吗?
【问题讨论】:
-
JOB_NUMBER列使用哪种数据类型? -
显然
SELECT FIRST_NAME, JOB_NUMBER FROM JOBTABLE WHERE TO_CHAR(JOB_NUMBER) IN ('00052', '00048') -
您想要检查作业编号是否为 `in('00052', '00048') - 两个不同字符串的列表。你传入的是一长串。你现在明白为什么这不起作用了吗?那么:字符串参数中的逗号后面真的有空格吗?这很奇怪。然后 - 今天早上其他人刚刚发布了几乎相同的问题;环顾四周,我在该线程中解释了解决此问题的标准方法。
-
即使我没有空间,我也想在一个长字符串中搜索数字。请告诉我该怎么做。
标签: database string oracle plsql oracle-sqldeveloper