2016-05-10 8 views
0

Ich habe Tabelle column, die CSV value s enthält. zB: 2,3,4,1,13 Ich möchte spezifische string von der CSV finden und die row passende exakte Suche string von csv zurückgeben.Wie gibt man die exakte Übereinstimmung der Zeilenanpassung aus der CSV-Spalte in sql zurück?

Tabelle:

tbl_A(ID,name,Csv) 

ID name CSV 
1 ABC 1,2,13,15 
2 PQR 1,4,3,5 

@SearchSting=13 

Ausgang erforderlich:

ID name CSV 
1 ABC 1,2,13,15 


select * from tbl_A where csv like '%@SearchSting%' 

Dies wird sowohl Zeilen geben. :(

Hilfe geschätzt!

+0

überprüfen Sie, ob das hilft - http: // StackOverfl ow.com/questions/9207628/sql-search-from-csv-string – MusicLovingIndianGirl

+1

Welche DBMS benutzen Sie? Postgres? Orakel? Die beste Lösung ist, dein defektes Design zu reparieren. –

+0

sein SQLSERVER2012! –

Antwort

1

mich mit den Worten beginnen Linke, dass dies eine schlechte Datenbank-Design und sollte vermieden werden. Wenn möglich, sollten Sie Ihre Datenbank normalisieren und ändern, dass Csv Spalte zu einer Tabelle, die jeden Wert enthält . in einer eigenen Zeile Weiterführende Literatur: Is storing a delimited list in a database column really that bad?

wenn jedoch die Normalisierung der Datenbank nicht möglich ist, können Sie dies tun:

SELECT Id, Name, Csv 
FROM tbl_A 
WHERE ',' + Csv + ',' LIKE '%,' + @SearchString + ',%' 
+0

@a_horse_with_no_name Guter Fang! behoben, danke. –

+0

hi @Zohar Peled, diese Lösung funktioniert nicht in SQL Server! Vorherige Lösung hat funktioniert ... bitte 'Rückgängig machen' die Antwort auf die vorherige ...! –

+1

Fertig. Bitte denken Sie daran, immer alle relevanten Tags in Ihren Fragen zu verwenden. Andere Datenbanken verwenden den SQL-Standard || zum Verketten von Strings als a_horse_with_no_name richtig geschrieben. –

Verwandte Themen