Καλημέρα σε όλους,
Προσπαθώ να φτιάξω μια συνάρτηση σε SQL SERVER 2000 η οποία θα παίρνει μια ελληνική λέξη και θα επιστρέφει την ίδια λέξη χωρίς τους τόνους.
Σύνταξα λοιπόν διαδοχικές replace με όλα τα φωνήεντα της Ελληνικής αλφαβήτα για τα μικρά και τα κεφαλαία.
CREATE Function dbo.F_CutGreekTones(@STR varchar(8000) )
RETURNS VARCHAR(8000)
AS
BEGIN
-- Για τα μικρά τονισμένα
SET @STR=REPLACE(@STR,'ά','α')
SET @STR=REPLACE(@STR,'έ','ε')
SET @STR=REPLACE(@STR,'ή','η')
SET @STR=REPLACE(@STR,'ί','ι')
SET @STR=REPLACE(@STR,'ό','ο')
SET @STR=REPLACE(@STR,'ύ','υ')
SET @STR=REPLACE(@STR,'ώ','ω')
-- Για τα Κεφαλαία τονισμένα
SET @STR=REPLACE(@STR,'Ά','Α')
SET @STR=REPLACE(@STR,'Έ','Ε')
SET @STR=REPLACE(@STR,'Ή','Η')
SET @STR=REPLACE(@STR,'Ί','Ι')
SET @STR=REPLACE(@STR,'Ό','Ο')
SET @STR=REPLACE(@STR,'Ύ','Υ')
SET @STR=REPLACE(@STR,'Ώ','Ω')
return @str
END
Το πρόβλημα λοιπόν με την παραπάνω Function είναι πως αν έρθει μια λέξη η οποία τονίζεται για παράδειγμα ένα κεφαλαίο γράμμα θα το γυρίσει στο αντίστοιχο μικρό άτονο πχ αν την καλέσω σαν: select dbo..F_CutGreekTones('ΑνανΆς') θα γυρίσει 'Ανανας' αντί ΑνανΑς που θέλω να κάνει.
Σκέφτηκα λοιπόν αντί να κάνω αντκατάσταση απευθείας του χαρακτήρες να το κάνω με Ascci κωδικούς όπου το Ά είναι διαφορετικό από ά
αλλά εξακολουθώ να έχω το ίδιο πρόβλημα
CREATE Function dbo.F_CutGreekTones(@STR varchar(8000) )
RETURNS VARCHAR(8000)
AS
BEGIN
-- Για τα μικρά τονισμένα
SET @STR=REPLACE(@STR,CHAR(220),CHAR(225))
SET @STR=REPLACE(@STR,CHAR(221),CHAR(229))
SET @STR=REPLACE(@STR,CHAR(222),CHAR(231))
SET @STR=REPLACE(@STR,CHAR(223),CHAR(233))
SET @STR=REPLACE(@STR,CHAR(252),CHAR(239))
SET @STR=REPLACE(@STR,CHAR(253),CHAR(245))
SET @STR=REPLACE(@STR,CHAR(254),CHAR(249))
-- Για τα Κεφαλαία τονισμένα
SET @STR=REPLACE(@STR,CHAR(162),CHAR(193))
SET @STR=REPLACE(@STR,CHAR(184),CHAR(197))
SET @STR=REPLACE(@STR,CHAR(185),CHAR(199))
SET @STR=REPLACE(@STR,CHAR(186),CHAR(201))
SET @STR=REPLACE(@STR,CHAR(188),CHAR(207))
SET @STR=REPLACE(@STR,CHAR(190),CHAR(213))
SET @STR=REPLACE(@STR,CHAR(191),CHAR(217))
return @str
END
Ευχαριστώ πάρα πολύ!
Best Regards