我的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会产生错误,如何解决此问题。感谢
答案 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 %%等 回到澄清,它不是最好的解决方案,但有时候我已经习惯了。