相关疑难解决方法(0)

在SQL Server中转义字符串,以便在LIKE表达式中使用它是安全的

如何在SQL Server的存储过程中转义字符串,以便在LIKE表达式中使用它是安全的.

假设我有一个NVARCHAR像这样的变量:

declare @myString NVARCHAR(100);
Run Code Online (Sandbox Code Playgroud)

我想在LIKE表达式中使用它:

... WHERE ... LIKE '%' + @myString + '%';
Run Code Online (Sandbox Code Playgroud)

如何在T-SQL中转义字符串(更具体地说,对LIKE模式匹配有意义的字符,例如%?),以便以这种方式使用它是安全的?

例如,给定:

@myString = 'aa%bb'
Run Code Online (Sandbox Code Playgroud)

我想要:

WHERE ... LIKE '%' + @somehowEscapedMyString + '%'
Run Code Online (Sandbox Code Playgroud)

匹配'aa%bb','caa%bbc'但不是'aaxbb''caaxbb'.

t-sql sql-server stored-procedures sql-like

74
推荐指数
3
解决办法
17万
查看次数

忽略T-SQL中的NULL参数

我希望能够传入一个参数列表,并忽略那些为NULL的参数.这样查询实际上假装过滤器不存在并忽略它.

我是这样做的:

(@thing IS NULL or Thing=@thing) 
Run Code Online (Sandbox Code Playgroud)

这是对的,如果是的话,它会表现得很糟糕吗?它似乎比分别构造SQL要慢很多.

这样做的最佳方法是什么?

固定!请参阅Marc Gravell的回答.总之,使用IS NULL多次是一个很大的性能影响.

t-sql parameters performance

24
推荐指数
3
解决办法
3万
查看次数

执行期间用户代码错误未处理SqlException

我正在制作页面以显示来自表格的信息(如任何电子邮件网站的收件箱页面).但我得到以下错误:

关键字'to'附近的语法不正确.

下面是我的C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class Inbox : System.Web.UI.Page
{
SqlConnection con = new SqlConnection();
SqlCommand cmmd = new SqlCommand();
protected void Page_Load(object sender, EventArgs e)
{
    con.ConnectionString=@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\Users\user\documents\visual studio 2012\WebSites\Email\App_Data\Database.mdf;Integrated Security=True";
    con.Open();
    label1.Text = Session["uid"].ToString();

    cmmd.CommandText = "select frm from Inbox where to='" + Session["uid2"].ToString() + "'";
    cmmd.Connection= con;
    SqlDataAdapter daa = new SqlDataAdapter(cmmd);
    DataTable dtt = new DataTable();
    daa.Fill(dtt);

    if(dtt.Rows.Count > 0) …
Run Code Online (Sandbox Code Playgroud)

c# sql asp.net sql-server-2012-express

0
推荐指数
1
解决办法
4004
查看次数