Jest sobie SQL Serwer 2000. Wyskrobalem taka oto procedurke, ktoora zamienia mi wszystkie polskie literki na angielskie odpowiedniki:
ALTER FUNCTION ReplacePL(@Str CHAR(1000))
RETURNS CHAR(1000)
AS
BEGIN
DECLARE @TbPL CHAR(18), @TbEn CHAR(18)
DECLARE @i INT
SET @TbPl = 'ąĄćĆęĘłŁńŃóÓśŚżŻźŹ'
SET @TbEn = 'aAcCeElLnNoOsSzZzZ'
SET @i = 1
WHILE(@i <= Len(@TbPl))
BEGIN
SET @Str = Replace(@Str, SubString(@TbPl, @i, 1), SubString(@TbEn, @i, 1))
SET @i = @i + 1
END
RETURN(@Str)
END
Jakiego typu uzyc dla parametru i zwracanego przez funkcje ciagu, zeby uniezaleznic sie od dlugosci ciagu wejsciowego? Czy podac CHAR(maklsymalny_rozmiatr_char), czy jest cos innego, jakis taki String o zmiennej dlugosci?
// Dopisane
A czy da sie ustawic jakis parametr zeby funkcja Replace byla CASE-SENSITIVE? Bo w tej chili ignoruje duze i male litery, czego efekem jest ze jak wywolam funkcje:
ReplacePL('JABŁOŃSKI')
To mi zwroci:
ReplacePL('JABlOnSKI')
Moze jakis SET?