a = "abcd";
b = "abcedeas";
b1="acijkllllqq";
b2="12cd321k";
指b,b1,b2中包含a中的其中2个以上的字符都查询出来.
请大虾们帮帮忙。
a = "abcd";
b = "abcedeas";
b1="acijkllllqq";
b2="12cd321k";
指b,b1,b2中包含a中的其中2个以上的字符都查询出来.
请大虾们帮帮忙。
数据库可完不成这样的工作。只能把4个表里的数据都查出来再ASP.NET端做操作。取出数据后用indexof来判断是否符合条件。
是可以的。SqlServer 2005 支持创建程序集功能!!所以我们可以用.NET中正则,解决sql搜索匹配不足的缺点。如下图片是我的Demo.
//.cs
using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Text.RegularExpressions;
public partial class UserDefinedFunctions { public static readonly RegexOptions Options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;
[Microsoft.SqlServer.Server.SqlFunction] public static SqlBoolean RegexMatch(SqlChars input, SqlString pattern) { Regex regex = new Regex(pattern.Value, Options); return regex.IsMatch(new string(input.Value)); } };
//.sql
CREATE ASSEMBLY UserFunction FROM 'D:\UserFunction.dll' WITH PERMISSION_SET = SAFE; GO CREATE FUNCTION [dbo].[RegexMatch](@input [nvarchar](max), @pattern [nvarchar](4000)) RETURNS [bit] WITH EXECUTE AS CALLER AS EXTERNAL NAME [UserFunction].[UserDefinedFunctions].[RegexMatch] GO --设置权限 sp_configure 'clr enabled', 1; GO RECONFIGURE; GO --test --select dbo.RegexMatch(N'123-45-6789', N'[0-9]{3}-[0-9]{2}-[0-9]{4}')