Заявление о ситуации на основе результата Postgresql - PullRequest
0 голосов
/ 27 июня 2018

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

(Case WHEN LENGTH(input)<=5 THEN text LIKE '%'
  ELSE text = input)

Когда я это сделал, это не сработало, и я все еще не понял, почему. Однако решение этой проблемы было

(Case WHEN LENGTH(input)<=5 THEN text LIKE Concat('%',input,'%')
  ELSE text = input END)

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

У меня есть ученик, который все еще проверяется на предмет поступления в школу, однако эта школа на немецком языке, поэтому мне нужно перевести для них несколько слов, так как система на английском

select s.fname, s.lastname, 
(Case when s.status like 'APPROVED' then s.status = 'Genehmigt'
when s.status like 'PENDING' then s.status = 'Anstehend.'
end) as Status
from Student

Мои результаты дают мне False в поле состояния, так что, очевидно, я делаю что-то не так ... И я знаю, что есть два типа описания случая, поэтому я использую рекомендованный?

1 Ответ

0 голосов
/ 27 июня 2018

Выражение, которое вы поместили после then:

s.status = 'Genehmigt'

не является присваиванием, это логическое выражение, поэтому оно дает true или false. s.status = просто избыточно.

select 
    fname, 
    lastname, 
    case when status = 'APPROVED' then 'Genehmigt'
    when status = 'PENDING' then 'Anstehend.'
    end as status
from student

Обратите внимание, что like со строкой без подстановочных знаков в правой части должно быть простым сравнением.

...