程序开发 > MsSql > 正文

sql字符串中的字符表示(内嵌字符串)

亮术网 2017-02-25 本网原创

  在查询分析器中执行存储过程传递参数或编写sql语句时,经常出现字符串中又有字符或字符串的情况,即内嵌字符串。这种情况在编程语言(如C#)中很好表示,用转义字符\就可以了,而t-sql中没有转义字符,那么应该如何表示呢?

  由于执行sql语句或存储过程通常在编程语言中完成,所以很少在查询分析器中直接编写字符串中又有字符的语句或参数,故而某一次用到时忘记了具体表示方法,又花一定的时间来测试找出它,所以把它总结记录下来以便于下次使用。至于怎么表示sql字符串中的字符,下面以具体实例说明。

 

  一、sql字符串中内嵌字符需要用到的存储过程

  Create Proc SelectProducts
  @subWhere varchar(300)
  As
  Begin
   exec('Select Id,ProductName,Contents From ProductTable Where ' + @subWhere + 'Order BY Id Desc')
  End
  Go

  以上存储过程是根据传入的条件从一个产品表中选出符合条件的产品ID、产品名称和产品介绍字段;由 Where 后是参数,所以用 exec 来执行sql语句。

 

  二、sql字符串中的字符串或字符表示方法

  t-sql中不用转义字符\表示内嵌字符串,而是用两个单引号表示。众所周知,在 t-sql 中,用一个单引号括起来就表示一个字符或字符串,正巧用两个单引号括起来就表示内嵌字符串。执行上述存储过程,如果用模糊查询,就需要在一个字符串中表示另一个字符串,具体执行方法如下:

  exec SelectProducts 'ProductTitle like ''电脑%'' And Id > 100'

  执行存储过程的条件是要求从产品表中选出产品标题以电脑开头的并且Id大于100的记录。like后面的条件要用单引号括起来,而汉字又必须以字符的形式出现,所以也要用单引号括起来,这样也就出现了一个字符串中内嵌另一个字符串的情况。

本文浓缩标签:字符串表示内嵌sql