Ich habe SQL-Strings wie die folgenden, mit mehreren Trues
und Falses
:kann nicht bools mit ints ersetzen
INSERT INTO SystemRules (Col1, Col2, Col3, Col4, Col5)
Values (False,False,True,False,False)
Ich möchte alle mit 0 Falsch ersetzen und alle Wahr mit 1. Aber wenn ich versuche, diese :
sql = sql.Replace(",True,", ",1,").Replace(",True)", ",1)").Replace(",False,", ",0,").Replace(",False)", ",0)");
... es entfernt nur einige der Falschen ... nicht alle von ihnen. Zum Beispiel habe ich am Ende mit auf den Punkt:
INSERT INTO SystemRules (Col1, Col2, Col3, Col4, Col5)
Values (0,0,1,0,0)
Also dann versuche ich regex statt (nur 1 Stück unten angezeigt):
INSERT INTO SystemRules (Col1, Col2, Col3, Col4, Col5)
Values (0,False,1,0,False)
Was ich dies erwartet war
sql = Regex.Replace(sql, ",True)", ",1)");
Diese bestimmte Linie explodiert mit diesem Fehler: parsing ",True)" - Too many)'s.
Was ist der effizienteste Weg, um alle zu ersetzen Wahr und False in einer SQL-Anweisung mit 1s und 0s? Ich habe immer string.Replace() in C# global ersetzt, ich bin verwirrt, warum es einige fehlt. Da sind keine Räume drin, ich habe dreifach überprüft. Ein Beweis dafür ist, dass, wenn ich die Reihe von REPLACEs über ein zweites Mal laufen lasse, es ersetzt die Nachzügler. Warum nicht das erste Mal? Ist C# replace
wirklich nicht global? Vielen Dank.
auf eine sehr einfache Art und Weise getan werden, warum es nicht während des SQL Gebäude 'col1Value 1: 0 'oder' col1Value == "True"? 1: 0' – ASpirin
Ich weiß nicht, wie es das erste 'False' durch' 0' even ersetzt hat, da keines Ihrer '.Replace()' Argumente 'False' ohne vorangestelltes erlaubt Komma. – itsme86
Der Versuch, das Problem zu reproduzieren, führt nicht zu dem von Ihnen beschriebenen Ergebnis. Ihre Beschreibung des Problems ist nicht korrekt: http://ideone.com/FzUE6c – JLRishe