Автор Тема: аналог x ? x : y в SQL а также русские буквы и LIKE в MS SQL  (Прочитано 3860 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
Возникла нужда в такой фунции как
id1 ? id1 : id2
или id1 or id2, т.е:
если id1!=0 возвращаем id1, иначе возвращаем id2. Подскажите, как такое сделать используя стандартные средства SQL (или специфичные для Transact-SQL, что в MS SQL)?.

И еще: при переходе с Access на MS SQL LIKE перестал искать без учета регистра. Никто не сталкивался с таким?
•••Jah\'d never let us down!•••

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Э... А почему нельза сделать UDF\'ку с запросом?
Конструкции типа IF...THEN T-SQL поддерживает (http://www.sql.ru)
AS IS...

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
А можно линк на статью про UDF и прочий продвинутый SQL?
А то я в этом ни фига не понимаю еще...
•••Jah\'d never let us down!•••

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
AS IS...

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
Ну вот сделал я такую хрень. Она конечно же не работает:
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 правильное условие, добраться до нужного значения?
•••Jah\'d never let us down!•••

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
Умные люди на http://sql.ru подсказали, что надо использовать CASE.
Запрос получился такой:
SELECT *, CASE MasterID WHEN 0 THEN ID ELSE MasterID END AS CompID FROM shops_dictCities;

Тема исчерпана.
•••Jah\'d never let us down!•••

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28