В SQL, LPAD()
е често използвана функция, която допълва лявата част на низ с определен символ. Функцията може да се използва за низове и числа, въпреки че в зависимост от СУБД, може да се наложи числата да се предават като низ, преди да могат да бъдат допълнени.
СУБД, които имат LPAD()
функция включва MySQL, MariaDB, PostgreSQL и Oracle.
СУБД, които не имат LPAD()
функция включва SQL Server и SQLite (въпреки че има и други начини за прилагане на лявото допълване в тези СУБД).
Пример
Ето пример, за да демонстрирате как да използвате LPAD()
във вашия SQL код:
SELECT LPAD('Look Left', 20);
Резултат:
<пред>+-----------------------+| LPAD('Поглед наляво', 20) |+-----------------------+| Погледнете наляво |+-----------------------+
В този пример лявата част на низа е допълнена с интервал (знакът за допълване по подразбиране), а полученият низ е дълъг 20 знака (защото посочих 20
като втория аргумент).
Oracle работи по същия начин, но трябва да използваме FROM DUAL
когато правите заявка като тази (без заявка към действителна таблица):
SELECT LPAD('Look Left', 20)
FROM DUAL;
Резултат:
LPAD('LOOKLEFT',20) _______________________ Погледнете наляво
Посочете символ за подреждане
Подпълването не е задължително да е място. Можем по избор да добавим трети аргумент, за да посочим знака (или знаците), които да използваме в допълването.
SELECT LPAD('7', 3, '0');
Резултат:
007
В този случай допълних число с нули. Всъщност предадох числото като низ в този пример.
В някои СУБД (като MariaDB и MySQL) можем да предадем числото като число, както и числото, с което да го добавим:
SELECT LPAD(7, 3, 0);
Резултат:
007
Можем да направим това и в Oracle:
SELECT LPAD(7, 3, 0)
FROM DUAL;
Резултат:
007
Но PostgreSQL има проблем с това:
SELECT LPAD(7, 3, 0);
Резултат:
ГРЕШКА:функция lpad(цяло число, цяло число, цяло число) не съществува
SQL сървър
SQL Server няма LPAD()
функция, но тя има FORMAT()
функция, която ни позволява да добавяме числа с водещи нули:
SELECT FORMAT(7, '000');
Резултат:
007
Начинът, по който работи е, че предаваме числото, последвано от форматиращ низ. В горния пример низът за формат е 000
. Това е низ с персонализиран цифров формат, който води до подпълване на оригиналното число, така че резултатът да се състои от три цифри. Ако вече няма три цифри в оригиналното число, то е подплатено с нули.
За левите низове на подложка в SQL Server можем да направим нещо подобно:
SELECT RIGHT('.......' + 'Cat', 7);
Резултат:
....Котка
Има и няколко други еквивалента на LPAD() в SQL Server.