Используя сокращение с непечатными разделителями

Вам нужен дополнительный , 0. Я также предпочитаю стандартную функцию COALESCE(). Итак:

COALESCE(Nominator / NULLIF(Denominator, 0), 0) AS [Recidivation]  

Я также думаю, что намерение может быть более ясным с case:

(CASE WHEN Denominator = 0 or Denominator IS NULL THEN 0
      ELSE Nominator / Denominator
 END)
17
задан pacman 24 April 2009 в 10:15
поделиться

3 ответа

Если вы используете Bash,

cut -d $'\001' ...

работает (см. Справочное руководство Bash # 3.1.2.4 Цитирование ANSI-C ).

Другое (более переносимое) options,

cut -d `echo -e '\001'` ...

FS=`echo -e '\001'`
cut -d $FS ...

или вставка управляющего символа непосредственно с помощью ^ V, как было упомянуто Alnitak и etlerant, - в командной строке оболочки и в редакторах, таких как vi, это означает «не обрабатывать следующее, что я набираю специально».

28
ответ дан 30 November 2019 в 12:07
поделиться

Да, это вполне возможно.

Если вы печатаете в оболочке, нажмите ^ V , а затем ^ A , чтобы вставить ^ A дословно в текущей строке вместо того, чтобы рассматривать ее как обычную команду «перейти к началу строки»:

% cat -v foo
abc^Adef^Aghi
% cut -d^A -f2 foo
def
5
ответ дан 30 November 2019 в 12:07
поделиться

CTRL-V CTRL-A?

0
ответ дан 30 November 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: