|
|
|
Проблема с CASE!!!
|
|||
|---|---|---|---|
|
#18+
Привожу пример: create table #t1 (datat1 nchar(2) null) insert into #t1 (datat1) values ('3 ') insert into #t1 (datat1) values ('5 ') insert into #t1 (datat1) values ('E ') select (case when(isnumeric(#t1.datat1)=1) then (cast(#t1.datat1 as tinyint) * 2) else #t1.datat1 end) from #t1 drop table #t1 Проблема в следующем - первые две записи выбираются без проблем, но при выборке третьей (содержащей 'Е ') получаю: Server: Msg 245, Level 16, State 1, Line 7 Syntax error converting the nvarchar value 'E ' to a column of data type int. Судя по сообщению функция CASE пытается привести поле #t1.datat1 к типу int хотя я в условии else указываю просто вывести содержимое поля без всяких преобразований. Если кто-то может объясните пожалуйста в чем проблема или расскажите как это обойти. Заранее спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2002, 11:37:20 |
|
||
|
Проблема с CASE!!!
|
|||
|---|---|---|---|
|
#18+
Просто нельзя выводить в одном столбце данные разных типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2002, 11:46:39 |
|
||
|
Проблема с CASE!!!
|
|||
|---|---|---|---|
|
#18+
2> VVG_ Немного изменил все заработало, ты был прав. Спасибо!!! create table #t1 (datat1 nchar(2) null) insert into #t1 (datat1) values ('3 ') insert into #t1 (datat1) values ('5 ') insert into #t1 (datat1) values ('E ') select (case when(isnumeric(#t1.datat1)=1) then cast((cast(#t1.datat1 as tinyint) * 2)as nchar(2)) else #t1.datat1 end) from #t1 drop table #t1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2002, 11:52:26 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3379&tid=1818898]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
24ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 304ms |

| 0 / 0 |
