2017-01-25 7 views
0

Ich habe gegeben, eine Aufgabe Succeeding Strings anzuzeigen, die, Foo - BarFoo-Bar wie Foo - Bar aussieht, Foo!.,-Bar, Foo...-Bar und ich brauche nur als Foo angezeigt werden soll. Bedeutung Ich muss alle Zeichen nach dem - Symbol und allen Sonderzeichen davor entfernen. Gibt es eine einfache Funktion, die ich verwenden kann, die alle String-Instanzen, die ich in die gewünschte Ausgabe angegeben habe, liefern kann: Foo? Wir verwenden SQL Server 2008 R2.SQL String Entfernen Zeichen aus einem bestimmten Zeichen

EDIT: Ich muss erwähnen, dass die Worte Foo und Bar ist nur eine Darstellung der tatsächlichen Zeichenfolgen so hart Codierung der Zeichenfolge Länge wird nicht funktionieren.

Antwort

1

ich mit diesem (Dank an John Cappelletti kam für die Probendaten, Bitte tun Sie es sich auf Ihrem zukünftige Fragen):

Declare @YourTable table (col varchar(50)) 
Insert into @YourTable values 
('Foo - Bar') 
,('Foo-Bar') 
,('Foo  - Bar') 
,('Foo!.,-Bar') 
,('Foo...-Bar') 
,('aaa Foo - Bar aaa') 

Die Abfrage:

SELECT col, 
     LEFT(BeforeDash, LEN(BeforeDash) - PATINDEX('%[a-z]%', REVERSE(BeforeDash))+1) 
FROM  
(
    SELECT col, LEFT(col, CHARINDEX('-', col)) As BeforeDash 
    FROM @YourTable 
) derived 

Ergebnisse:

col      Display 
Foo - Bar    Foo 
Foo-Bar     Foo 
Foo  - Bar  Foo 
Foo!.,-Bar    Foo 
Foo...-Bar    Foo 
aaa Foo - Bar aaa  aaa Foo 
1

Versuchen Sie, diese

declare @String varchar(20)='Foo!.,-Bar' 
    select substring(@String,charindex('F', @String),3) 
+0

Seine wahre nur die Textlänge 3. – hkutluay

+0

ist warten sie nur auf 3-Buchstaben-Wort wie foo funktioniert was ist, wenn das erste Wort 3 oder mehr oder sogar 2? wie 'Fuß'? –

+0

@ super-user meine 2. antwort geben ergebnis und die erste antwort wird geben wenn string beginnt mit 'foo' – Chanukya

-1
DECLARE @STRING VARCHAR(2000) 
SET @STRING = 'FOO - DEPTH' 


SELECT LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(SUBSTRING(@STRING, 0, CHARINDEX('-', @STRING)),'!',''),'.',''),',',''))) 
0
Declare @YourTable table (col varchar(50)) 
Insert into @YourTable values 
('Foo - Bar') 
,('Foo-Bar') 
,('Foo  - Bar') 
,('Foo!.,-Bar') 
,('Foo...-Bar') 
,('aaa Foo-Bar aaa') 
,('There is no Bar-Foo here') 

Declare @Search varchar(50) = 'Foo - Bar' 
Select * 
     ,Display = case when col like '%'+Replace(@Search,' ','%')+'%' 
         then Left(@Search,charindex('-',@Search)-1) 
         else col 
       end 
From @YourTable 

Returns

col       Display 
Foo - Bar     Foo 
Foo-Bar      Foo 
Foo  - Bar   Foo 
Foo!.,-Bar     Foo 
Foo...-Bar     Foo 
aaa Foo-Bar aaa    Foo 
There is no Bar-Foo here There is no Bar-Foo here 
Verwandte Themen