2014-05-22 3 views
0

Я хочу показать пустое поле '' вместо значения нуля поля Expression. Если exp имеет тип данных INT. всякий раз, когда я пытаюсь использовать (случай, когда exp1 равен 0, тогда «else exp1 end как exp1), но он все равно получает 0 в качестве output.any помощь оценивается. Спасибозаменить 0 пустым пространством

+3

Не совсем уверен, что вы спрашиваете здесь. Не могли бы вы отправить код, который вы пробовали? – paqogomez

+2

Возможно, вы захотите использовать ключевые слова 'CAST()' или 'CONVERT()'. –

+0

У меня есть поля, ids - varchar, но высота и вес - тип interger. прямо сейчас я получаю 0s для высоты и веса, если нет значений (с использованием case case). Но я хочу пустое поле в этих полях – user3502587

ответ

5

Если exp - это числовой тип, вам нужно будет преобразовать его в строку, используя CAST or CONVERT. Кроме того, я не верю, что exp1 is 0 будет работать; Я думаю, что вы ищете exp1 = 0.

Попробуйте что-то вроде этого так:

(case when exp1 = 0 then '' else cast(exp1 as varchar(30)) end) as exp1 

(case when exp1 = 0 then '' else convert(varchar(30), exp1) end) as exp1 

Или, используя простой CASE выражение, например:

(case exp1 when 0 then '' else cast(exp1 as varchar(30)) end) as exp1 

(case exp1 when 0 then '' else convert(varchar(30), exp1) end) as exp1 

Примечание: По умолчанию длина для varchar и nvarchar в CAST и CONVERT 30, так что cast(exp1 as varchar) или convert(varchar, exp1) тоже будет работать, но, как на практике, лучше всего указывать длины этих типов всякий раз, когда вы используете t рубчик.


Однако, если то, что вы хотели бы сделать, это преобразовать значение 0 null, это довольно легко. Просто используйте NULLIF:

nullif(exp1, 0) exp1 

Это вернет NULL если exp1 значение 0, в противном случае она возвращает значение exp1. Когда вы вставляете это значение в таблицу, убедитесь, что столбец, в который вы его вставляете, имеет значение NULL. Если вы не знакомы с использованием null, обратитесь к Wikipedia article по этой теме для получения дополнительной информации.

+2

[Пожалуйста, не ленитесь о varchar vs. varchar (n)] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to -kick-declaring-varchar-without-length.aspx) –

+0

@AaronBertrand У меня на самом деле был 'varchar (30)' сначала, но он упал, чтобы сделать код более компактным и потому, что я думал, что OP предпочтет это. Но вы правы, лучше быть откровенным в этих вещах. Во всяком случае, спасибо за статью. –

+0

показывается как 0 в этом поле. У меня есть исходный стол, где высота и вес находятся в varchar() и таблице назначения, а высота и вес - в числовом(). Я хочу вставить исходные данные в пункт назначения. Но проблема здесь в том, что поле высоты и веса постоянно появляется в ноль в месте назначения, когда оно не имеет значения. Я просто хочу, там пусто идентификатор высота вес b25 146 162 t41 135 G89 201 TableB-назначения идентификатор высота вес b25 146 162 t41 135 0 G89 0 201 – user3502587

0

Я использовал RegEx

{ 
    cast(trim(
    replace(to_char(value),'0','')) as int) 
} 
Смежные вопросы