Jump to content

zeichen ausschließen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
....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

Link zu diesem Kommentar
...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

Link zu diesem Kommentar
: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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...