Функция RIGHT
Парная к LEFT функция RIGHT возвращает заданное число символов справа из строкового выражения:
RIGHT(строковое выражения, число символов)
Вот, например, как можно определить имена кораблей, которые начинаются и заканчиваются на одну и ту же букву:
SELECT name
FROM Ships
WHERE LEFT(name, 1) = RIGHT(name, 1);
[[ column ]] |
---|
NULL [[ value ]] |
То, что в результате мы получим пустой результирующий набор, означает, что таких кораблей в базе данных нет. Давайте возьмем комбинацию значений — класс и имя корабля.
Соединение двух строковых значений в одно называется конкатенацией, и в SQL Server для этой операции используется знак «+» (в стандарте «||»). Итак,
SELECT *
FROM (SELECT class +' '+ name AS cn
FROM Ships
) x
WHERE LEFT(cn, 1) = RIGHT(cn, 1);
[[ 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);
[[ column ]] |
---|
NULL [[ value ]] |
Чтобы исключить этот случай, можно воспользоваться еще одной полезной функцией - LEN.
Рекомендуемые упражнения: (-7)