Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / проанализировать значение символьного поля / 7 сообщений из 7, страница 1 из 1
26.07.2012, 15:04
    #37893922
Сергей Мирный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
Добрый день!

Помогите, пожалуйста, с запросом:
в таблице есть символьное поле fl_doc, которое надо проанализировать на наличие в нем информации (результат вывести в поле fl_scan). В поле fl_doc могут быть три варианта информации:
1. информация - есть (fl_scan= 'C')
2. значение поля - пусто (fl_scan= 'E')
3. поле не заполнялось - NULL (fl_scan= 'N')

запрос такой:
Код: sql
1.
2.
cStr1= "SELECT a.id_jour,a.fl_doc,CASE a.fl_doc WHEN '' THEN 'E' WHEN NULL THEN 'N' ELSE 'C' END as fl_scan FROM Journal_pp a"
?SQLEXEC(gnConnHandle, cStr1, 'Jour')


В результате в колонке fl_scan значение 'N' не отражается, если в поле fl_doc=NULL.
В остальных случаях отражается правильно: информация есть - 'C', пусто - 'E'

Используется MSSQL Server 2008R2, VFP9+SP1
...
Рейтинг: 0 / 0
26.07.2012, 18:47
    #37894312
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
Сергей Мирный
Код: sql
1.
CASE a.fl_doc WHEN '' THEN 'E' WHEN NULL THEN 'N' ELSE 'C' END

а если так
Код: sql
1.
CASE WHEN a.fl_doc='' THEN 'E' WHEN a.fl_doc IS NULL THEN 'N' ELSE 'C' END

?
Вообще это вопрос скорее в bid=1
...
Рейтинг: 0 / 0
27.07.2012, 06:56
    #37894680
Сергей Мирный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
[quot tanglir]Сергей Мирный
Код: sql
1.
CASE a.fl_doc WHEN '' THEN 'E' WHEN NULL THEN 'N' ELSE 'C' END

а если так
Код: sql
1.
CASE WHEN a.fl_doc='' THEN 'E' WHEN a.fl_doc IS NULL THEN 'N' ELSE 'C' END

?

интересный случай:
если так, то пишет ошибку в синтаксисе:
Код: sql
1.
CASE WHEN a.fl_doc='' THEN 'E' WHEN a.fl_doc IS NULL THEN 'N' ELSE 'C' END


но, например, если указать в условии, то запрос отрабатывает:
Код: sql
1.
cStr1= "SELECT a.id_jour,a.fl_doc,CASE a.fl_doc WHEN '' THEN 'E' WHEN NULL THEN 'N' ELSE 'C' END as fl_scan FROM Journal_pp a WHERE a.fl_doc IS NULL"
...
Рейтинг: 0 / 0
27.07.2012, 07:24
    #37894684
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
Сергей Мирныйесли так, то пишет ошибку в синтаксисе:кто пишет - фокс или мсскл?
...
Рейтинг: 0 / 0
27.07.2012, 07:34
    #37894686
Сергей Мирный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
tanglirСергей Мирныйесли так, то пишет ошибку в синтаксисе:кто пишет - фокс или мсскл?
ошибка появляется и в фоксе и в мсскл.
Решение такое - запрос отрабатывает правильно, если так:
Код: sql
1.
cStr1= "SELECT a.id_jour,a.fl_doc,CASE WHEN a.fl_doc ='' THEN 'E' WHEN a.fl_doc IS NULL THEN 'N' ELSE 'C' END as fl_scan FROM Journal_pp a"


Спасибо за помощь!
...
Рейтинг: 0 / 0
27.07.2012, 08:16
    #37894703
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
Сергей Мирныйзапрос отрабатывает правильно, если так:
Код: sql
1.
cStr1= "SELECT a.id_jour,a.fl_doc,CASE WHEN a.fl_doc ='' THEN 'E' WHEN a.fl_doc IS NULL THEN 'N' ELSE 'C' END as fl_scan FROM Journal_pp a"

Это абсолютно тот же case when, что и тут 12921603 .
...
Рейтинг: 0 / 0
27.07.2012, 08:28
    #37894710
Сергей Мирный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проанализировать значение символьного поля
tanglirСергей Мирныйзапрос отрабатывает правильно, если так:
Код: sql
1.
cStr1= "SELECT a.id_jour,a.fl_doc,CASE WHEN a.fl_doc ='' THEN 'E' WHEN a.fl_doc IS NULL THEN 'N' ELSE 'C' END as fl_scan FROM Journal_pp a"

Это абсолютно тот же case when, что и тут 12921603 .
Совершенно верно!
Ещё раз спасибо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / проанализировать значение символьного поля / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]