Oracle11g 如何在动态where子句中创建列名?TO_编号(列名)

Oracle11g 如何在动态where子句中创建列名?TO_编号(列名),oracle11g,Oracle11g,我目前正在尝试创建一个动态Select语句,当用户必须输入各种搜索条件时 目前,除了最重要的部分外,我的陈述的每一部分都有效 我正在尝试这样做: selStmt := 'SELECT column_one, column_2, column_3 FROM nerf whereClause := ' WHERE TO_NUMBER('''|| column_one ||''') <= '''|| userInput ||''''; selsmt:='选择第一列、第二

我目前正在尝试创建一个动态Select语句,当用户必须输入各种搜索条件时

目前,除了最重要的部分外,我的陈述的每一部分都有效

我正在尝试这样做:

selStmt := 'SELECT column_one, column_2, column_3
            FROM nerf
whereClause := ' WHERE TO_NUMBER('''|| column_one ||''') <= '''|| userInput ||'''';
selsmt:='选择第一列、第二列、第三列
来自nerf
whereClause:=“WHERE TO_NUMBER(“”’| | |列| |‘’)这应该可以:

selStmt := 'SELECT column_one, column_2, column_3 FROM nerf';
whereClause := ' WHERE TO_NUMBER(column_one) <= TO_NUMBER('''|| userInput ||''')';
selsmt:=“从nerf中选择第1列、第2列、第3列”;

whereClause:=“WHERE TO_NUMBER(column_one)出于某种原因,Oracle使用单引号来分隔字符串和转义字符,因此使用
是对Oracle的一项指令,用于在字符串中添加引号。例如:

'This is a string with a quote here: '' and then it ends normally'
将被代表为

This is a string with a quote here: ' and then it ends normally
在您的示例中,您将结束正在构建的
WHERE
子句,然后连接名为
column\u one
的PL/SQL变量标识符:

' WHERE TO_NUMBER('''|| column_one ||''')
…并且标识符
列的
NULL
值表示为

 WHERE TO_NUMBER('')
您可能希望从查询内部引用
列_one
,而不是从同名的PL/SQL变量中引用,因此您应该删除它周围的引号,如下所示:

whereClause := ' WHERE TO_NUMBER(column_one) <= TO_NUMBER('''|| userInput ||''')';

whereClause:='WHERE TO_NUMBER(第一列)谢谢,这很有效。我有点恼火,因为这是一件很容易错过的事情,但我会克服它的。我会投票支持你,但我还没有代表投票。新用户。感谢您的帮助,如果您还没有报价,Oracle developer是可以接受的,但我对它还很陌生,而且我还在习惯它。我也很喜欢你解释一下,而不是仅仅给出答案。我会投票支持你,但我现在缺少投票代表,新用户。
whereClause := ' WHERE TO_NUMBER(column_one) <= TO_NUMBER('''|| userInput ||''')';