Knappste Art und Weise zu verändern eine CSV-Zeichenfolge in eine Tabelle in TSQL?
-- Given a CSV string like this:
declare @roles varchar(800)
select @roles = 'Pub,RegUser,ServiceAdmin'
-- Question: How to get roles into a table view like this:
select 'Pub'
union
select 'RegUser'
union
select 'ServiceAdmin'
Nachdem dieses posting, ich begann das Spiel mit einigen dynamischen SQL. Dies scheint zu funktionieren, aber scheint, wie es könnte einige Sicherheitsrisiken durch die Verwendung von dynamischen SQL - Gedanken auf?
declare @rolesSql varchar(800)
select @rolesSql = 'select ''' + replace(@roles, ',', ''' union select ''') + ''''
exec(@rolesSql)
InformationsquelleAutor Paul Fryer | 2010-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Siehe meine Antwort von hier
Aber im Grunde genommen würde:
Erstellen diese Funktion in deine DB:
und rufen dann die Funktion auf und übergeben die Zeichenkette, die Sie aufteilen möchten.
TVF ja? Wäre es nicht SELECT * FROM dbo.Split(@Rollen ',') ??
InformationsquelleAutor codingbadger
Wenn Sie arbeiten mit SQL Server-Kompatibilität Stufe 130 dann die STRING_SPLIT Funktion ist jetzt die prägnanteste Methode zur Verfügung.
Referenz-link: https://msdn.microsoft.com/en-gb/library/mt684588.aspx
Verwendung:
InformationsquelleAutor sqlconsumer.net
Hier ist eine Gründliche Diskussion der Optionen:
InformationsquelleAutor LukeH
Mithilfe der SQL Server-built-in XML-parsing ist auch eine option. Natürlich, diese Glossen über alle Nuancen eines RFC 4180-konform CSV.
Wenn Sie SQL 2016+, mit
string_split
ist besser, aber dies ist ein gemeinsamer Weg, dies zu tun vor SQL 2016.InformationsquelleAutor mattmc3
Mithilfe von BULK INSERT, importieren Sie eine csv-Datei in der sql-Tabelle -
http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk-insert-load-comma-delimited-file-into-sql-server/
InformationsquelleAutor Sachin Shanbhag