Case sensitive REPLACE

Kolejne pytanie: jak wykonać REPLACE w SQL Serverze, ale tak żeby zamieniało będąc wrażliwym na wielkość znaków? Czyli coś w stylu:

REPLACE(kolumna, ‚mars’, ‚Snickers’) – źle
REPLACE(kolumna, ‚Mars’, ‚Snickers’) – dobrze

Funkcja REPLACE dokonuje porównania stringów na podstawie parametru COLLATION bazy danych lub kolumny. Aby zmienić to zachowanie najprościej lokalnie wykorzystać COLLATE.
Czytaj dalej

Dopełnianie zerami

Kolejne zadanie bojowe: do liczby z jakiejś kolumny dodać np. zera – ale albo na początku, albo na końcu. I żeby jeszcze była stała długość tak powstałej wartości, czyli np. dla liczby 12 dopełniać trzema zerami, ale dla 142 już tylko dwoma. Poniżej przykład dla zadanego ciągu 10 znaków.

Na szybko można rozwiązać to tak:
– dla dopełnienia ciągu z lewej strony
SELECT RIGHT(‚0000000000’+ CAST(kolumna AS VARCHAR(10)), 10)

Doklejamy na początek 10 zer, po czym bierzemy dziesięć ostatnich znaków.

– dla dopełnienia ciągu z prawej strony
SELECT LEFT(CAST(kolumna AS VARCHAR(10)) + ‚0000000000’, 10)

Tak samo – doklejamy 10 zer, tyle że na końcu i bierzemy pierwsze dziesięć znaków.