Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
Я сделал вот такую вот выборку

SELECT nls_id
,fio
,Im
,Ot

FROM _ab_kart
where date_end is null
and fio like '*%'

У меня получается в начале каждой фамилии идет знак *.
Мне нужно удалить все эти знаки из фамилий
23 ноя 17, 12:55    [20977636]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
dialog1984,

SELECT nls_id
,iif(fio like '*%', substring(fio, 2, len(fio)-1), fio)
,Im
,Ot

FROM _ab_kart
where date_end is null
and fio like '*%'
23 ноя 17, 13:04    [20977660]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
felix_ff
dialog1984,

SELECT nls_id
,iif(fio like '*%', substring(fio, 2, len(fio)-1), fio)
,Im
,Ot

FROM _ab_kart
where date_end is null
and fio like '*%'



Вот такая вот ошибка

К сообщению приложен файл. Размер - 36Kb
23 ноя 17, 13:10    [20977677]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
felix_ff, а зачем iif в выходном наборе-то? секция отбора другого не пропустит...
23 ноя 17, 13:11    [20977680]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
dialog1984
Вот такая вот ошибка

версия сервера ниже 2012
23 ноя 17, 13:33    [20977750]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Akina,

да туплю.


dialog1984,
у вас возможно сервер ниже 2012, в тех iif не было.
SELECT nls_id
,substring(fio, 2, len(fio)-1) as fio
,Im
,Ot

FROM _ab_kart
where date_end is null
and fio like '*%'
23 ноя 17, 13:35    [20977752]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
dialog1984,
SELECT REPLACE( '*FIO', '*','')
23 ноя 17, 13:42    [20977762]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
Yasha123
dialog1984
Вот такая вот ошибка

версия сервера ниже 2012



2008
23 ноя 17, 13:44    [20977766]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
felix_ff
Akina,

да туплю.


dialog1984,
у вас возможно сервер ниже 2012, в тех iif не было.
SELECT nls_id
,substring(fio, 2, len(fio)-1) as fio
,Im
,Ot

FROM _ab_kart
where date_end is null
and fio like '*%'


Вот это выводит их без точек.
Но мне нужно их удалить из базы на совсем
23 ноя 17, 13:45    [20977770]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
dialog1984
Yasha123
пропущено...

версия сервера ниже 2012



2008

там нет iif, отсюда и ошибка.
перепишите через case
23 ноя 17, 13:46    [20977772]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
dialog1984
мне нужно их удалить из базы на совсем
Удалить записи из таблицы или звёздочки из значения поля?
Поаккуратнее надо формулировать свои хотелки. Во избежание...
23 ноя 17, 13:50    [20977793]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
iif вообще нигде не нужен. Ни до 2012-го, ни после.
Был, есть и будет - CASE!
23 ноя 17, 13:59    [20977831]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
Akina
dialog1984
мне нужно их удалить из базы на совсем
Удалить записи из таблицы или звёздочки из значения поля?
Поаккуратнее надо формулировать свои хотелки. Во избежание...


в моей выборке отсортированы фамилии начинающиеся на *.
Так вот эту таблицу нужно привести к эталонному виду.
соответственно нужно оставить только фамилии, символ * удалить из базы и соответственно из таблицы
23 ноя 17, 14:03    [20977845]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
да реплэйсить все звезды на пусто и все тут
23 ноя 17, 14:07    [20977858]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
ГуЗы
Guest
iap
iif вообще нигде не нужен. Ни до 2012-го, ни после.
Был, есть и будет - CASE!

Replace(f1,'*','')
короче будет.
23 ноя 17, 14:08    [20977861]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20527
dialog1984
нужно оставить только фамилии, символ * удалить из ... таблицы

Правильно заданный вопрос - половина ответа
23 ноя 17, 14:14    [20977872]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
Ребят, так кто нибудь поможет про апдейтить эту таблицу.
Плииииииииииииииз
23 ноя 17, 14:51    [20977993]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
dialog1984
Ребят, так кто нибудь поможет про апдейтить эту таблицу.
Плииииииииииииииз

UDATE _ab_kart SET fio =  Replace(f1,'*','')
23 ноя 17, 14:52    [20978000]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
iap
iif вообще нигде не нужен. Ни до 2012-го, ни после.
Был, есть и будет - CASE!


не соглашусь, с эстетической точки зрения этот синтаксический сахар выглядит опрятнее когда нужна тернарная условная операция.
23 ноя 17, 14:53    [20978004]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
TaPaK
dialog1984
Ребят, так кто нибудь поможет про апдейтить эту таблицу.
Плииииииииииииииз

UDATE _ab_kart SET fio =  Replace(f1,'*','')


Выдает вот такую вот ошибку
Сообщение 102, уровень 15, состояние 1, строка 1
Incorrect syntax near '='.
23 ноя 17, 14:54    [20978007]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
dialog1984
TaPaK
пропущено...

UDATE _ab_kart SET fio =  Replace(f1,'*','')


Выдает вот такую вот ошибку
Сообщение 102, уровень 15, состояние 1, строка 1
Incorrect syntax near '='.

ой всё
23 ноя 17, 14:55    [20978009]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
dialog1984,

UPDATE вместо UDATE

вы там вообще не смотрите что пишут?
написали бы дропнуть базу тоже бы неглядя исполнили?
23 ноя 17, 14:56    [20978010]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
Получается вот так самое верное

UpDATE _ab_kart
SET fio = Replace(fio,'*','')
where date_end is null
and fio like '*%'

но вот такая вот ошибка

Сообщение 512, уровень 16, состояние 1, процедура check__ab_kart, строка 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
23 ноя 17, 15:02    [20978038]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
dialog1984
Получается вот так самое верное

UpDATE _ab_kart
SET fio = Replace(fio,'*','')
where date_end is null
and fio like '*%'

но вот такая вот ошибка

Сообщение 512, уровень 16, состояние 1, процедура check__ab_kart, строка 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
Триггер на UPDATE у таблицы есть?
23 ноя 17, 15:04    [20978059]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с запросом  [new]
dialog1984
Member

Откуда:
Сообщений: 20
Эта ошибка из за триггера.
Нельзя обрабатывать больше одной записи за раз.
Нужна цикличность.
т.е.
Обработал одну запись (в моем случае фамилию) и заново запустился на обработку
И так покуда не обработает все.
Как это сделать?
23 ноя 17, 15:07    [20978078]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить