TriggerMichNet 10 Geschrieben 15. August 2012 Melden Teilen Geschrieben 15. August 2012 hi @sql='AAAAAAAAAA xxxx BBBBBBBBBB, AAAAAAAAAA 1 BBBBBBBBBB , AAAAAAAAAA 2 BBBBBBBBBB hier die Frage: suche in @sql nach folgenden Texten "AAAAAAAAAA 1 BBBBBBBBBB" "AAAAAAAAAA 2 BBBBBBBBBB" "AAAAAAAAAA BBBBBBBBBB" "AAAAAAAAAA 3 BBBBBBBBBB" "....." "AAAAAAAAAA 999 BBBBBBBBBB" die abstände zwischen aaa und bbb sind nicht konstant. es darf zwischen aa und bb kein [^a-z] oder [^A-Z] existieren. Zahlen oder Space sind erlaubt. wie kann ich das mit einem like oder patindex oder anderes suchen?:confused: freue mich über jeden hinweis:D vg frank Zitieren Link zu diesem Kommentar
hh2000 10 Geschrieben 15. August 2012 Melden Teilen Geschrieben 15. August 2012 Moin, ist etwas abstrakt was du da möchtest. Denke mal über eine Normalisierung der Daten nach, wenn das möglich ist. Ähnliche Beispiele die evtl. weiterhelfen, die korrekten Befehle hast du ja schon genannt: http://www.mcseboard.de/ms-sql-server-forum-81/string-teile-feldes-selektieren-185551.html http://www.mcseboard.de/ms-sql-server-forum-81/suchen-loeschen-bestimmter-zeichenanzahl-182008.html Gruß Kai Zitieren Link zu diesem Kommentar
TriggerMichNet 10 Geschrieben 16. August 2012 Autor Melden Teilen Geschrieben 16. August 2012 ....die korrekten Befehle hast du ja schon genannt:.... ok ok, ich weiss aber nicht wie? Was will ich machen: SELECT DISTINCT 'MyDB' As [DB_Name] , syso.name AS ObjectName , syso.type AS ObjectType from MyDB.sys.sql_modules AS sysc INNER JOIN MyDB.dbo.sysobjects AS syso ON sysc.object_id = syso.id WHERE (sysc.definition LIKE '%TABLOCKX%') In der MyDB sind viele sehr viele SP's und UDF's. In denen sind einige select anweisungen die TABLOCKX verwenden. es soll nun auf sql 2008 r2 migriert werden und hier muss geprüft werden op das Schlüsselwort "With" davor steht. wie kann ich das "EINFACH" lösen:confused: vg f Zitieren Link zu diesem Kommentar
hh2000 10 Geschrieben 16. August 2012 Melden Teilen Geschrieben 16. August 2012 Moin, evtl. einfach nur mit ... WHERE sysc.definition LIKE '%WITH%TABLOCKX%' oder ... WHERE sysc.definition LIKE '%WITH TABLOCKX%' Gruß Kai Zitieren Link zu diesem Kommentar
TriggerMichNet 10 Geschrieben 17. August 2012 Autor Melden Teilen Geschrieben 17. August 2012 ...evtl. einfach nur mit .... :suspect: :rolleyes:aha... soweit war ich auch schon.... NATÜRLICH... :schreck:... du hast vollkommen recht.... Keep it simple! Habe seit gestern auch ne Lösung gefunden. Problem war, dass die Entwickler zwichen dem From und dem With kein Space sondern TAB verwendet haben. Manchmal auch zwischen With und (TABLOCKX). Mein Filter den ich definiert hatte lieferte keine Ergebnisse. WHERE sysc.definition LIKE '% with %(TABLOCKX) %' Habe eine Funktion geschrieben, die mir die Anzahl der gefundenen TABLOCKX sowie die "with (TABLOCKX)" zählt. sysc.definition wurde als Übergabewert für @SQLText verwendet. In der Funktion wird erstmal der Text von Sonderzeichen bereinigt und dann durchsucht.... FUNCTION [dbo].[CountKeywordHits] ( @SQLText nvarchar(max).... ... set @SQLText = REPLACE(@SQLText,CHAR(9), ' ') --del tba set @SQLText = REPLACE(@SQLText,'with ', ' with ') set @SQLText = REPLACE(@SQLText,' ', ' ')-- replace double spaces to one spache set @SQLText = REPLACE(@SQLText,CHAR(13), ' ') -- recpace CR to space set @SQLText = REPLACE(@SQLText,CHAR(10), ' ') -- recpace LF to space Anschließend können die Vorkomnisse gezählt werden.:cool::D ...set @index = PATINDEX('% WITH (TABLOCKX)%', @SQLText) Ok, dieses Thema kann als erfolgreich geschlossen werden. Danke für die Denkanstösse ;-) VG Frank Zitieren Link zu diesem Kommentar
hh2000 10 Geschrieben 17. August 2012 Melden Teilen Geschrieben 17. August 2012 :suspect: :rolleyes:aha... soweit war ich auch schon.... NATÜRLICH... :schreck:... du hast vollkommen recht.... Keep it simple! Habe seit gestern auch ne Lösung gefunden. Problem war, dass die Entwickler zwichen dem From und dem With kein Space sondern TAB verwendet haben. Manchmal auch zwischen With und (TABLOCKX). Mein Filter den ich definiert hatte lieferte keine Ergebnisse. WHERE sysc.definition LIKE '% with %(TABLOCKX) %' VG Frank Du hast noch zusätzliche Leerzeichen im SuchString. Das passt dann nicht auf z.B. "WITH{CRLF}TABLOCKX" WHERE sysc.definition LIKE '%WITH%TABLOCKX%' Der sollte genau das gewünschte finden. Gruß Kai Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.