ВЫБЕРИТЕ ИМЯ ИЗ ABCD, ГДЕ ИМЯ НРАВИТСЯ "+ aero +%" И ROWNUM <= 10 - PullRequest
3 голосов
/ 04 марта 2010

ВЫБРАТЬ ИМЯ ИЗ ABCD, ГДЕ ИМЯ НРАВИТСЯ "+ aero +%" И ROWNUM <= 10 </p>

что за синтаксическая ошибка в этой строке ...... SELECT NAME FROM ABCD это работает

Ответы [ 6 ]

4 голосов
/ 04 марта 2010

Вам нужно один цитаты:

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

А также пробел перед И.

UPDATE

Непонятно в вашем вопросе, что именно вы ищете. Вместо этого вам может понадобиться одно из следующих:

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

... или какой-то другой вариант. Но важно то, что вы должны окружать литералы одинарными, а не двойными кавычками.

2 голосов
/ 04 марта 2010

EDIT:

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%'.

1 голос
/ 04 марта 2010

Двойные кавычки вокруг буквального?

Нет пробела между литералом и AND?

0 голосов
/ 04 марта 2010

Мне не ясно, является ли ваша 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);
0 голосов
/ 04 марта 2010

Если вы вызывали это из некоторых программных кодов, более вероятно следующее, где aero - это переменная, а% будет действовать как подстановочный знак. Когда aero равен ab, он будет искать 'ab','abc', 'abcd', .......

"SELECT NAME FROM ABCD WHERE NAME LIKE '"+aero+"%' AND ROWNUM <= 10;"
0 голосов
/ 04 марта 2010

Вам необходимо указать символ между выражением и оператором AND. И дать одинарные кавычки для ваше регулярное выражение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...