Функция REVERSE
Функция REVERSE
Эта функция переворачивает строку, как бы читая ее справа налево. То есть результатом запроса
SELECT REVERSE('abcdef');
🚫
[[ error ]]
[[ column ]] |
---|
NULL [[ value ]] |
SELECT RIGHT('abcdef', 3);
🚫
[[ error ]]
[[ column ]] |
---|
NULL [[ value ]] |
можно было бы равносильно заменить запросом
SELECT REVERSE(LEFT(REVERSE('abcdef'), 3));
🚫
[[ error ]]
[[ column ]] |
---|
NULL [[ value ]] |
Польза этой функции в следующем. Пусть нам требуется определить позицию не первого, а последнего вхождения некоторого символа (или последовательности символов) в строке. Вспомним пример, в котором мы определяли позицию первого символа а в названии корабля California:
SELECT CHARINDEX('a', name) first_a
FROM Ships
WHERE name = 'California';
🚫
[[ error ]]
[[ column ]] |
---|
NULL [[ value ]] |
Определим теперь позицию последнего вхождения в это название символа а. Функция CHARINDEX(‘a’, REVERSE(name)) позволит найти эту позицию, но справа. Для получения позиции этого же символа слева достаточно написать
SELECT LEN(name) + 1 - CHARINDEX('a', REVERSE(name)) first_a
FROM Ships
WHERE name = 'California';
🚫
[[ error ]]
[[ column ]] |
---|
NULL [[ value ]] |