在varchar变量SQL Server 2008中存储单引号
我想知道是否有一种方法可以在SQLServer2008中存储单引号。我正在构建几个报告,所有这些报告都是完全相同的,只是它们在我选择的代码上有所不同。例如,一份报告使用代码“abc”、“def”、“ghi”,另一份报告使用代码“jkl”、“mno”、“pqr”。我在考虑减少必须生成的存储过程的数量,我可以在报表上生成一个参数来选择要运行的报表类型。基于此,我将使用正确的代码。所以我打算把这些代码存储在一个varchar变量中。以下是我希望的功能:在varchar变量SQL Server 2008中存储单引号,sql,sql-server,tsql,sql-server-2008,Sql,Sql Server,Tsql,Sql Server 2008,我想知道是否有一种方法可以在SQLServer2008中存储单引号。我正在构建几个报告,所有这些报告都是完全相同的,只是它们在我选择的代码上有所不同。例如,一份报告使用代码“abc”、“def”、“ghi”,另一份报告使用代码“jkl”、“mno”、“pqr”。我在考虑减少必须生成的存储过程的数量,我可以在报表上生成一个参数来选择要运行的报表类型。基于此,我将使用正确的代码。所以我打算把这些代码存储在一个varchar变量中。以下是我希望的功能: DECLARE @codes1 varchar,
DECLARE @codes1 varchar, @codes2 varchar
SET @codes1 = ''abc', 'def', 'ghi''
SET @codes2 = ''jkl', 'mno', 'pqr''
然后,我将根据用户选择的参数使用适当的varchar变量。唯一的问题是设置变量,因为字符串中有单引号(该字符串将在SQL“in”语句中使用,这就是单引号存在的原因)。类似于此。是的,Oded是正确的。正确的术语是“逃逸”。您可以通过将单个引号对折来对其进行转义
尽量避免硬编码值。创建一个表来保存这些值以及对它们进行分组的方法
Table CodeGroups
GroupNumber | Codes
1 | abc
1 | def
1 | ghi
2 | kkl
2 | mno
2 | pqr
这样,用户只需选择GroupNumber=1
将CodeGroups表链接到带有代码字符串的表。要添加另一个代码,只需在此表中输入一个条目并给它一个组号。只需将其加倍,即可避免单个qoute问题 值Varchar2(10):=“abc”---你会得到一个错误
值Varchare(10):=“abc”---将解决您的问题。Aka,通过将单个
'
加倍来转义它。'
。变量声明中还需要一个长度,以避免截断为1个字符。谢谢!这正是我需要的!另外,感谢@Martin的补充评论!我也需要这个!提到的OP使用SQL Server 2008-您的解决方案是否打算与SQL Server 2008一起使用?此外,您应该在上面对您的解决方案进行解释。
int varId = "1";
String varItem = "Google's root";
String strSQL = "INSERT INTO table("
+ "id,"
+ "item"
+")"
+ "VALUES('" + varId
+ "', '" + varItem
+ "')";
int varId = "1";
String varItem = "Google's root";
String strSQL = "INSERT INTO table("
+ "id,"
+ "item"
+")"
+ "VALUES('" + varId
+ "', '" + varItem
+ "')";