在SQL server中使用空格进行搜索
在表中我有一个条目在SQL server中使用空格进行搜索,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,在表中我有一个条目 12-345678 123-456-789 123456789 在UI文本框中,当有人键入:-两个空格然后一个破折号时 输出应为: 12-345678 在UI文本框中,当有人键入:12- 输出应为: 12-345678 12-345678 在UI文本框中,当有人键入:12 要执行此操作的select查询是 select column1,column2 from table1 where column1 like '%textbox1.text%'; tex
12-345678
123-456-789
123456789
在UI文本框中,当有人键入:-两个空格然后一个破折号时
输出应为:
12-345678
在UI文本框中,当有人键入:12-
输出应为:
12-345678
12-345678
在UI文本框中,当有人键入:12
要执行此操作的select查询是
select column1,column2 from table1 where column1 like '%textbox1.text%';
textbox1.text->UI的textbox名称
之前的任何内容-需要退回,例如:
if you type 12-, return output should be 12-345678 alone,
if you type 123-, then the return output should be 123-456-789 alone.
if you type - (only dash, no space on the front , then the return output should be 12-345678 and 123-456-789 .
但是它在少数情况下会失败,有没有任何方法可以计算空间并直接在sql中修改查询?类似于
"Select column1,column2 From Table1 Where column like " + textbox1.text.Replace(' ','_') + "%"
当然,您应该使用参数化查询
sql通配符是
% 0 to n of any character
underscore 1 single character
[xyz] any single character that is x, y or z
因此,在您的示例中,它将类似于“\uuuu-%”
一个由2折叠的空格类似于“_2%”,并同时选取您的三个示例,因为每个示例都是一个字符,后跟2,后跟其他类似的内容
"Select column1,column2 From Table1 Where column like " + textbox1.text.Replace(' ','_') + "%"
当然,您应该使用参数化查询
sql通配符是
% 0 to n of any character
underscore 1 single character
[xyz] any single character that is x, y or z
因此,在您的示例中,它将类似于“\uuuu-%”
如果我理解正确的话,一个由2折叠的空格就像“_2%”一样,并同时选取您的三个示例,因为每个示例都是一个字符,后跟2,后跟一些其他内容。:如果有前导空格,您需要将它们转换为_。对于没有前导空格的情况,可以只追加% 我怀疑您需要一行修复,但尽管您可能会将其全部打包到一个iff中,但如果可能的话,我会避免这样做 编辑以添加 C:
如果我理解正确:当有前导空格时,需要将它们转换为z。对于没有前导空格的情况,可以只追加% 我怀疑您需要一行修复,但尽管您可能会将其全部打包到一个iff中,但如果可能的话,我会避免这样做 编辑以添加 C:
你是说两个空格和一个破折号应该返回12-345678,因为它是唯一一个第三个字符是破折号的字符吗?之前的任何字符都需要返回,例如:如果键入12-,则返回输出应该是12-345678,如果键入123-,那么返回输出应该是123-456-789。你是说两个空格和一个破折号应该返回12-345678,因为它是唯一一个第三个字符是破折号的字符吗?之前的任何字符都需要返回,例如:如果键入12-,返回输出应该是12-345678,如果键入123-,那么返回输出应该是123-456-789。谢谢,我会在sql中标识之前的空间吗?你是从其他语言调用sql吗?我本应该使用sql,但我需要用C进行验证计算空间。谢谢,我会在sql中标识之前的空间吗?你是从其他语言调用sql吗?我本应该使用sql,但我需要用C进行验证计算空间。
string arg = theTextbox.Text;
arg = arg.Replace("'", "''"); // avoid SQL injection attack
arg = arg.Replace(" ", "_"); // space = single character wildcard = '_'
if (arg.StartsWith("-")) // special case
arg = "%-";
string sqlStatement = string.Format("SELECT column1, column2 " +
"FROM table1 WHERE column1 like '{0}%', arg);