loading..
Русский    English
19:05
листать

Функция LEFT

Функция имеет следующий синтаксис:

  1. LEFT(строковое выражение, целочисленное выражение)
и вырезает заданное вторым аргументом число символов слева из строки, являющейся первым аргументом. Итак,

Консоль
Выполнить
  1. SELECT DISTINCT LEFT(name, 1)
  2. FROM Ships
  3. ORDER BY 1;

А вот как, например, можно получить таблицу кодов всех алфавитных символов:

Консоль
Выполнить
  1. SELECT CHAR(ASCII('a')+ num-1) letter, ASCII('a')+ num - 1 [code]
  2. FROM (SELECT 5*5*(a-1)+5*(b-1) + c AS num
  3. FROM (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3
  4. UNION ALL SELECT 4 UNION ALL SELECT 5
  5. ) x CROSS JOIN
  6. (SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3
  7. UNION ALL SELECT 4 UNION ALL SELECT 5
  8. ) y CROSS JOIN
  9. (SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3
  10. UNION ALL SELECT 4 UNION ALL SELECT 5
  11. ) z
  12. ) x
  13. WHERE ASCII('a')+ num -1 BETWEEN ASCII('a') AND ASCII('z');

Здесь используется алгоритм генерации числовой последовательности, изложенный в главе 8.

Как известно, коды строчных и прописных букв отличаются. Поэтому, чтобы получить полный набор без переписывания запроса, достаточно просто дописать к вышеприведенному коду аналогичный:

  1. UNION
  2. SELECT CHAR(ASCII('A')+ num-1) letter, ASCII('A')+ num - 1 [code]
  3. FROM (SELECT 5*5*(a-1)+5*(b-1) + c AS num
  4. FROM (SELECT 1 a UNION ALL SELECT 2 UNION ALL SELECT 3
  5. UNION ALL SELECT 4 UNION ALL SELECT 5
  6. ) x CROSS JOIN
  7. (SELECT 1 b UNION ALL SELECT 2 UNION ALL SELECT 3
  8. UNION ALL SELECT 4 UNION ALL SELECT 5
  9. ) y CROSS JOIN
  10. (SELECT 1 c UNION ALL SELECT 2 UNION ALL SELECT 3
  11. UNION ALL SELECT 4 UNION ALL SELECT 5
  12. ) z
  13. ) x
  14. WHERE ASCII('A')+ num -1 BETWEEN ASCII('A') AND ASCII('Z')

Чтобы таблица выглядела более патриотично, достаточно заменить латинские буквы a и A на неотличимые на вид русские — а и А, а z и Z на я и Я. Вот только буквы «ё» вы не увидите в этой таблице, так как в кодовой таблице ASCII эти символы лежат отдельно, что легко проверить:

Консоль
Выполнить
  1. SELECT ASCII('ё')
  2. UNION ALL
  3. SELECT ASCII('Ё');

Полагаем, что для вас не составит сложности добавить эту букву в таблицу при необходимости.

Рассмотрим теперь задачу определения нахождения искомой подстроки в строковом выражении. Для этого могут использоваться две функции — CHARINDEX и PATINDEX. Обе они возвращают начальную позицию (позицию первого символа подстроки) подстроки в строке.


Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
месяц назад
обмен с ripple
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.