Forum Webscript.Ru
Общие => Базы данных => Тема начата: Xander от 17 Февраля 2003, 00:40:41
-
Возникла нужда в такой фунции как
id1 ? id1 : id2
или id1 or id2, т.е:
если id1!=0 возвращаем id1, иначе возвращаем id2. Подскажите, как такое сделать используя стандартные средства SQL (или специфичные для Transact-SQL, что в MS SQL)?.
И еще: при переходе с Access на MS SQL LIKE перестал искать без учета регистра. Никто не сталкивался с таким?
-
Э... А почему нельза сделать UDF\'ку с запросом?
Конструкции типа IF...THEN T-SQL поддерживает (http://www.sql.ru)
-
А можно линк на статью про UDF и прочий продвинутый SQL?
А то я в этом ни фига не понимаю еще...
-
так это...
http://www.sql.ru ;)
yandex rules :beer:
http://www.interface.ru/faq/microsoft/sqlserver_faq1_1.htm
http://www.citforum.ru/database/articles/sqlservqa.shtml
-
Ну вот сделал я такую хрень. Она конечно же не работает:
CREATE FUNCTION func ()
RETURNS @ExampleTable TABLE
(city_id int,
city_name varchar(50),
city_masterid int,
city_mid int
)
AS
BEGIN
INSERT @ExampleTable VALUES (city_id,city_name,city_masterid)
SELECT * FROM shops_dictCities
IF city_masterid=0
INSERT @ExampleTable VALUES (city_mid) city_id
ELSE
INSERT @ExampleTable VALUES (city_mid) city_masterid
RETURN
END
GO
SELECT * FROM dbo.func()
Как сделать в IF правильное условие, добраться до нужного значения?
-
Умные люди на http://sql.ru подсказали, что надо использовать CASE.
Запрос получился такой:
SELECT *, CASE MasterID WHEN 0 THEN ID ELSE MasterID END AS CompID FROM shops_dictCities;
Тема исчерпана.