Функция RIGHT

Парная к LEFT функция RIGHT возвращает заданное число символов справа из строкового выражения:

RIGHT(строковое выражения, число символов)

Вот, например, как можно определить имена кораблей, которые начинаются и заканчиваются на одну и ту же букву:

SELECT name
FROM Ships
WHERE LEFT(name, 1) = RIGHT(name, 1);
🚫
[[ error ]]
[[ column ]]
NULL [[ value ]]

То, что в результате мы получим пустой результирующий набор, означает, что таких кораблей в базе данных нет. Давайте возьмем комбинацию значений — класс и имя корабля.

Соединение двух строковых значений в одно называется конкатенацией, и в SQL Server для этой операции используется знак «+» (в стандарте «||»). Итак,

SELECT *
FROM (SELECT class +' '+ name AS cn
      FROM Ships
     ) x
WHERE LEFT(cn, 1) = RIGHT(cn, 1);
🚫
[[ error ]]
[[ column ]]
NULL [[ value ]]

Здесь мы разделяем пробелом имя класса и имя корабля. Кроме того, чтобы не повторять всю конструкцию в качестве аргумента функции, используем подзапрос. Результат будет иметь вид:

Cn
Iowa Missouri
North Carolina Washington

А если строковое выражение будет содержать лишь одну букву? Запрос выведет ее. В этом легко убедиться, написав:

SELECT *
FROM (SELECT class +' '+ name AS cn
      FROM Ships
      UNION ALL
      SELECT 'a' AS cn
     ) x
WHERE LEFT(cn, 1) = RIGHT(cn, 1);
🚫
[[ error ]]
[[ column ]]
NULL [[ value ]]

Чтобы исключить этот случай, можно воспользоваться еще одной полезной функцией - LEN.

Рекомендуемые упражнения: (-7)