我有一个类似于此的SQL查询文件:
INSERT INTO Bank (bankCode, swiftCode, bankName, country, countryCode, locationCode,
address, city)
VALUES ('MIDL', 'MIDLGB2102N', 'Hsbc Bank Plc', 'United Kingdom', 'GB',
'21', '', 'Bishop's Stortford');
我必须替换字符串文字中的所有单引号才能执行查询。
有人可以提供正则表达式来实现吗?
例如,上述查询应为:
INSERT INTO Bank (bankCode, swiftCode, bankName, country, countryCode,
locationCode,
address, city)
VALUES ('MIDL', 'MIDLGB2102N', 'Hsbc Bank Plc', 'United Kingdom', 'GB',
'21', '', 'Bishop''s Stortford');
将'Bishop's Stortford'替换为'Bishop'的Stortford'。将'替换为''
答案 0 :(得分:0)
为此,你在PHP中有PDO :: quote函数。请检查此链接:http://php.net/manual/en/pdo.quote.php
如果你想要一个pattrn for regex替换:/(\(|\s)'([\w ']*)'(,|\))/
或者在PHP中:preg_replace("/(\(|\s)'([\w ']*)'(,|\))/", '$1"$2"$3', $line);
答案 1 :(得分:0)
最简单的方法可能类似于:
/[^,(]\s*'\s*[^,)]/
这将匹配所有' 字符,这些字符前面或后面没有逗号或paren(只有其他有效的MySQL字符)。我包括搜索空格,因为它们也可能是有效字符。
那肯定匹配一切。我对MySQL Workbench解析正则表达式中的替换方式并不十分熟悉,所以我在那里得不到多少帮助。
答案 2 :(得分:0)
要通过MySQL Workbench导入,请执行以下操作: