从ABCD中选择名称,其名称类似于“+ aero +%”和ROWNUM< = 10

时间:2010-03-04 09:57:11

标签: sql oracle

从ABCD中选择名称,其名称类似于“+ aero +%”和ROWNUM< = 10

这一行中的语法错误是什么...... SELECT NAME FROM ABCD这是有用的

6 个答案:

答案 0 :(得分:4)

您需要单个引号:

SELECT NAME FROM ABCD WHERE NAME LIKE '+aero+%' AND ROWNUM <= 10

在AND之前还有一个空格。

<强>更新

您的问题并不清楚您究竟在寻找什么。您可能需要以下其中一项:

SELECT NAME FROM ABCD WHERE NAME LIKE '"+aero+%"' AND ROWNUM <= 10

SELECT NAME FROM ABCD WHERE NAME LIKE '%"+aero+"%' AND ROWNUM <= 10

SELECT NAME FROM ABCD WHERE NAME LIKE '"%+aero+%"' AND ROWNUM <= 10

......或其他一些变化。但重要的是你应该用单引号而不是双引号来表达文字。

答案 1 :(得分:2)

修改

con.prepareStatement(
    "SELECT name FROM abcd WHERE name LIKE '" + aero + "%' AND ROWNUM <= 10");

将找到以变量aero开头的所有字符串。

要获取包含变量aero的字符串的所有字符串,请使用

con.prepareStatement(
    "SELECT name FROM abcd WHERE name LIKE '%" + aero + "%' AND ROWNUM <= 10");

您需要使用单引号而不是双引号:

SELECT name
FROM abcd
WHERE name LIKE '+aero+%'
  AND ROWNUM <= 10;

如果双引号位于字符串中,则搜索使用'"+aero+%"'

如果您只想搜索包含aero的字符串,请使用'%aero%'

答案 2 :(得分:1)

文字周围的双引号?

文字和AND之间没有空格?

答案 3 :(得分:0)

  

您需要在表达式和AND运算符之间给出字符。并给出单引号   你的正则表达式

答案 4 :(得分:0)

如果您从某些程序代码中调用它,则更有可能发生以下情况:aero是变量,%将充当通配符。当aero为ab时,它会搜索'ab','abc', 'abcd', .......

"SELECT NAME FROM ABCD WHERE NAME LIKE '"+aero+"%' AND ROWNUM <= 10;"

答案 5 :(得分:0)

我不清楚您的 aero 是文字字符串'aero'还是程序中变量的名称。如果它是文字,那么这样做:

pr = con.prepareStatement
         ("SELECT NAME FROM ABCD WHERE NAME LIKE 'aero%' AND ROWNUM <= 10");

如果它是变量,那么你应该使用绑定变量。语法不仅更容易混淆,还可以防止SQL注入攻击。我不是ASP专家,但语法类似于:

pr = con.prepareStatement
         ("SELECT NAME FROM ABCD WHERE NAME LIKE ?||'%' AND ROWNUM <= 10");
con.setString(1,aero);