我正在使用php,我想在oracle sql查询中替换单引号。
我有这样的事情:
select 'this is test' for 'stack overflow'' , 'another' single quote was around here' from testtable where id='test' and another='test2'
我正在使用oracle所以转义字符是双单引号。
我的问题是只在select
和from
语句之间找到单引号,替换不应删除每个字段的开头和结尾的第一个单引号。
答案应该是这样的
select 'this is test'' for ''stack overflow''' , 'another'' single quote was around here' from testtable where id='test' and another='test2'
字段数可以变化。在我的例子中它有两个字段,每个字段包含单引号。但有时字段包含引用,有时不包含引号,有时它们会相互跟随,有时则不是。
我厌倦了不同的正则表达式。试着想出一个解决方案,但没有运气
所以我的问题是如何实现这个?哪个php功能或什么正则表达式?
答案 0 :(得分:0)
我认为你不能直接做你想做的事。
例如,如果您有'field one', 'field' two'
,则可以将其解释为'field one', 'field'' two'
或'field one '', ''field'' two'
。
如果可能的话,你可能想尝试这样的事情:
//First put the field names in an array $fields
...
//Then you create the query string like this
$sql = "select '" . implode("', '", str_replace("'", "''", $fields) ) . "' from testtable where id='test' and another='test2'";