Внимание! Для работы использовались MS SQL 7.0 и MS SQL 2000
Внимание! при использовании ISQL поля varchar в результате запроса SELECT усекаются до 255 символов
INSERT INTO имя_таблицы
[(список_полей)]
VALUES (список_значений)
подзапрос не получился. Вышло сообщение об ошибке.
UPDATE имя_таблицы
SET список_имя_поля_равно_значение
[WHERE условие]
SELECT [DISTINCT | TOP n] список_полей
FROM имена_таблиц
[WHERE условие]
[ORDER BY список_полей_сортировки]
при сортировке по убыванию после имени поля DESC
[FOR BROWSE]
Пример явного указания использования индекса в MS SQL 2005:
FROM SELMLOG5.dbo.EVENTS t1 with (index=udt)
ISNULL(выражение,значение) - борьба со специальным значением NULL
DATALENGTH(выражение) - длина
Нумерация строк ответа на SQL запрос
SELECT
(Select Sum(1)
From Products p
Where p.ProductName<=p1.ProductName) AS [Номер],
p1.ProductName as [Наименование]
FROM
Products AS p1
ORDER BY
p1.ProductName;
SELECT pcid, COUNT(pcid) AS Expr1
FROM nj
GROUP BY pcid
HAVING COUNT(pcid)>1
ORDER BY COUNT(pcid) DESC
выводится значение и количество повторений, если это количество больше 1
ограничение по дате в формате datetime
SELECT *
FROM TREB_P
WHERE (date2 > CONVERT(datetime, '23.03.2005', 104))
получение даты в "человеческом" виде (дд.мм.гггг), если поле REGDATE описано FLOAT(8) как в MarcSQL
CONVERT(char(20), CONVERT(datetime, REGDATE), 104) AS Expr1 - в таком виде почему-то дата спешит на 2 дня.
CONVERT(char(20), CONVERT(datetime, REGDATE-2), 104) AS Expr1 - 31.03.2005 давало правильную дату
CONVERT(char(20), CONVERT(datetime, REGDATE-2), 120) AS Expr1 - если еще надо и время (другой формат даты получается гггг-мм-дд)
Присвоение полю (например, типа datetime) значения NULL
UPDATE a SET date_b = NULLIF (0, 0) WHERE (id = 90048)
Работа с подстроками. Получение частей поля ФИО (фамилия имя отчество):
PATINDEX('% %', [ФИО]) AS [Позиция первого пробела]
SUBSTRING([ФИО], 1, PATINDEX('% %', [ФИО]) - 1) AS [фамилия]
SUBSTRING([ФИО], PATINDEX('% %', [ФИО]) + 1, DATALENGTH([ФИО])) AS [имя и отчество]
Удаление первого символа пробела в поле title по всей таблице a UPDATE a SET title = SUBSTRING(title, 2, DATALENGTH(title)) WHERE (title LIKE ' %')
Удаление символов перевода строки в конце поля geogr по всей таблице a UPDATE a SET geogr=SUBSTRING(geogr, 1, DATALENGTH(geogr)-2) from a where geogr like '%'+ char(13)+ char(10)
Выделение e-mail, находящегося в начале поля kontakt и отделенного от других данных пробелом, запятой или точкой с запятой
substring(kontakt,1,patindex('%[ ,;]%',kontakt+';')-1)
После пересоздания хранимых процедур и функций не забыть снова дать права на выполнение