SQL-конкат и escape-символы - PullRequest
1 голос
/ 10 марта 2012

Итак, я работаю над запросом, который бы получал имя_представителя_тесты, фамилию_текста или бизнес-имя_сталицы.

Я столкнулся с проблемой при попытке объединить запятую.

 case
 when (credit_req_contr_requestor.requestor_type_id=0)
 then CONCAT(CONCAT(credit_req_contr_requestor.last_name_txt,'','') , 
 credit_req_contr_requestor.first_name_txt )
when(requestor_business.requestor_type_id=3)
 then    requestor_business.business_name_txt end as applicant_name_txt

Причина, по которой я даю две одинарные кавычки, заключается в том, что этот запрос выполняется загрузчиком Java SQL, который прерывается, когда он встречает одну кавычку.

Но, когда я запускаю этот запрос, он выдает ошибку, говорящую "недопустимое количество аргументов".Итак, я добавил три одинарных кавычки ''',''', но тогда имя_пользователя_txt будет выглядеть как Smith',' John.

Я пытался использовать ||вместо concat, и это та же проблема.

Как мне узнать об этом?Как добавить запятую между этими двумя полями при отображении?Любые другие escape-символы, которые я могу использовать?

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Если вам нужно полностью избежать использования одинарных кавычек (кажется очень странным, что утилита сломается, если передать оператор SQL, содержащий строковый литерал), вы можете сделать что-то вроде этого

SQL> ed
Wrote file afiedt.buf

  1  with x as (
  2    select 0 type_id, 'John' first_name, 'Smith' last_name, null business_name
  3      from dual
  4    union all
  5    select 3, null, null, 'ACME Bolts'
  6      from dual
  7  )
  8  select (case when type_id = 0
  9               then last_name || chr(44) || chr(32) || first_name
 10               else business_name
 11           end)
 12*   from x
SQL> /

(CASEWHENTY
-----------
Smith, John
ACME Bolts
1 голос
/ 10 марта 2012

Как насчет CONCAT (credit_req_contr_requestor.last_name_txt, CHR (44))

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