2016-08-10 5 views
0

Допустим, у меня есть вопрос, как это:заменяет значения параметров на? в SQL запросе

INSERT INTO users (lastname, age, city, email, firstname) VALUES ('Doe',30,'Austin', '[email protected]', 'Jon') 

Я хочу, чтобы заменить все параметры, передаваемые в запросе со знаком вопроса, чтобы получить что-то вроде этого:

INSERT INTO users (lastname, age, city, email, firstname) VALUES (?,?,?,?,?) 

Обратите внимание, что это всего лишь пример, и запрос может быть намного сложнее. Я просто хочу заменить все параметры, переданные знаком вопроса.

Любая идея, как достичь этого?

+3

Обычно это наоборот. Зачем это делать? –

+0

Я записываю запросы, сделанные в базу данных, и не хочу захватывать значения параметров. –

+0

Чтобы сделать это правильно и обработать все возможные варианты, вам понадобится настоящий синтаксический анализатор SQL. Регулярные задачи сами по себе не соответствуют задаче. –

ответ

-1

Это просто с помощью функции replaceAll,

String str = "INSERT INTO users (lastname687878, age1, city55,email, firstname66) VALUES (33,30,'Austin', '[email protected]', 'Jon')"; 
System.out.println(str.replaceAll("'.+?'","?").replaceAll(",\\d+", ",?").replaceAll("\\(\\d+", "(?")); 

Выход:

INSERT INTO users (lastname687878, age1, city55,email, firstname66) VALUES (?,?,?, ?, ?) 
+0

Не обязательно. Параметры не всегда являются строками и могут быть числом. В этом примере 30 не будет заменено на? –

+0

HHey Я просто запускаю его в затмении, здесь точка (.) Представляет любой символ может быть числом или строкой. Если у вас есть сомнения, просто запустите и проверьте. Поиск отзывов. –

+0

aah я пропустил это. Спасибо, попробуем это –

Смежные вопросы