在SQL Select中替换引号

时间:2013-06-22 19:16:39

标签: sql

我的vb.net项目中有一个场景,用户需要从组合框中选择一个名称(或输入新名称)。

当然,名称可以',如 Tina O'Hara ,数据库中的名称将存储为 Tina O''Hara

我的组合框是从sql select命令填充的。我尝试使用替换,以便在下拉列表中正确显示名称。

SqlStr = "SELECT Replace(ContactName, '''', ''') AS ddlText FROM tbl_Visits Where CustID = " & hd_CustID.value & " ORDER By ContactName"
PopulateCMBX(cmbx_ContactName, SqlStr, "Please Select")  

PopulateCMBX ...这会从提供的SqlStr中获取名称列表,并使用“请选择”作为第一个选项填充组合框项目列表。

由于没有匹配的'集,SqlStr会产生错误,如何解决此问题。感谢

2 个答案:

答案 0 :(得分:1)

在MS-SQL中引用单引号时,您需要使用两个单引号('')转义每个单引号(')。

如果名称存储在带有两个单引号的数据库中,例如(''),那么当您执行替换时,需要使用四个单引号('''')。除此之外,您还需要用单引号括起字符串。

这意味着您的替换应如下所示:

SqlStr = "SELECT Replace(ContactName, '''''', '''') ...

替换中的第二个参数有6个单引号:4表示要替换的两个单引号,2表示为字符串。第3个参数有4个单引号:2表示单个转义引号,2个表示字符串。

答案 1 :(得分:0)

尝试使用此功能,可能不是最佳解决方案,但可行(请查看此example):

select Replace(Replace(ContactName, '''', '$&'),'$&$&','''') from tbl_Visits

请注意, $& 就像一个不会影响字段中值的键,例如,可能是一个字:&& k&&或%% key %%等 回到澄清,它不是最好的解决方案,但有时候我已经习惯了。