我在c#winform中有一个蒙面文本框。
掩蔽就像
- (two numbers on the front and 4 number on the right after the dash).
for ex: 12-3456
还有更多的排列,例如
- (3 spaces on the front and 5 on the right)
for ex: 123-34567
当用户键入123-34567时,select sql查询应仅返回
123-34567
当用户键入12-3456时,select sql查询应仅返回
12-3456
当用户键入 - 时,应返回select sql查询 仅
12-3456(即输入两个空格)
当用户键入 - 时,select sql查询应该 仅返回
123-34567(即输入三个空格)
换句话说,用户可以在不输入任何内容的情况下进行搜索 只有掩码启用文本框和 search(空 - 空) - 只有破折号掩码,键入数字 掩码和搜索(例如:12-)。
我正在使用的查询是
select column1,column2 from table1 where column2 like '%__-%';
(下划线是动态计算的),我如何在任何其他最佳方法中得到这个(比如在单个查询中)?
考虑这个table1并在数据库中有一个“MaskedInfo”列。
Table1:
MaskedInfo
1234567
12-34567
123-4567
123-45678
用户可以输入任何搜索内容,如12-34567或123-4567或简单 1234567并且如果文本框是empy,则在结果中加载所有内容。
答案 0 :(得分:0)
问题似乎是第一个%,你正在更改用户输入下划线的空格,你是对的但是第一个%会在下划线之前得到你的结果, 所以
like '%__-%' //(two underscores)
将获得在 - ,
之前有两位或更多位数的任何内容like '%___-%' //(three underscores)
将获得在 -
之前有三位或更多位数的任何内容删除第一个%将获得与下划线具有完全相同数字的结果
答案 1 :(得分:0)
您可以尝试使用charindex:
WHERE(@search =''OR charindex(' - ',@ search)= charindex(' - ',column2))