Χμμ ναι πολύ καλή μου φαίνεται η ιδέα αφαίρεσης χαρακτήρων από το τέλος
Εσύ λες δηλαδή να χρησιμοποιήσω κάτι τέτοιο σε μια function (το LIKE πλέον δε θα χρειάζεται γιατί το string θα γίνει ακριβώς ίδιο):
CREATE FUNCTION [dbo].[GetTblVal] ( @CheckVal VARCHAR(100) )
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @RetVal VARCHAR(100) ,
@iLen INT = LEN(@CheckVal);
WHILE @iLen > 0
BEGIN
SET @CheckVal = SUBSTRING(@CheckVal, 1, @iLen);
SELECT @RetVal = COL1 FROM TBL1 WHERE COL1 = @CheckVal;
IF NOT @RetVal IS NULL BREAK;
SET @iLen -= 1;
END;
RETURN @RetVal;
END;
Παρά με κέρσορα κάτι τέτοιο
CREATE FUNCTION [dbo].[GetTblVal] ( @CheckVal VARCHAR(100) )
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @TBLVAL VARCHAR(100);
DECLARE C CURSOR FOR SELECT COL1 FROM TBL1;
OPEN C;
FETCH NEXT FROM C INTO @TBLVAL;
WHILE @@FETCH_STATUS = 0
BEGIN
IF CHARINDEX(@TBLVAL, @CheckVal) > 0 BREAK;
FETCH NEXT FROM C INTO @TBLVAL;
END;
CLOSE C;
DEALLOCATE C;
RETURN @TBLVAL;
END;
Στην πρώτη περίπτωση θα γίνουν τόσα select από το table όσοι και οι χαρακτήρες που θα αφαιρεθούν, που μπορούν να μειωθούν αν δω το μήκος του μεγαλύτερου string στον πίνακα και ξεκινήσω από αυτό το νούμερο
ενώ στην περίπτωση του cursor θα γίνει ένα select και loop μέσα στα αποτελέσματα μέχρι να βρεθεί το row, εκτός αν o cursor δε λειτουργεί έτσι και απλά θα ήθελα να λειτουργούσε έτσι.
Πάντως όσον αφορά την υλοποίηση στον Client, το πρώτο που μου είχε έρθει είναι το αντίστοιχο του cursor όπου θα κάνω loop μέσα στα datarows, ελέγχοντας εάν το IndexOf αντίστοιχα με το CHARINDEX του SQL είναι > -1
Με το full-text search δεν έχω ασχοληθεί ιδιαίτερα, μόνο ότι χρειάστηκε για το certification 70-461.. Από τα λίγα που διάβασα δε θυμάμαι να είδα κάτι που να μπορούσε να βοηθήσει σε αυτή την περίπτωση καθώς έπαιζε με replacement strings, συνώνυμα και γενικώς "ανώτερου επιπέδου" κατανόηση γλώσσας. Αλλά πως μπορείς να του πεις για ένα άγνωστο string που θα έρθει από το χρήστη και δεν υπάρχει σε κανένα "λεξικό" σου ότι αυτό μπορεί να αντικατασταθεί με κάτι άλλο (BETAXJK@4223 --> BETA)
Εκτός αν το είδα τόσο πολύ επιφανειακά το θέμα και έχει κι άλλα κόλπα. Θα το παρακολουθήσω το βιντεάκι γιατί μου κίνησε το ενδιαφέρον, ευχαριστώ!
Panos