Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中匹配模式_C#_Sql - Fatal编程技术网

C# 在C语言中匹配模式

C# 在C语言中匹配模式,c#,sql,C#,Sql,这看起来很明显,但我想知道C中是否有用于匹配字符串的通配符。 我想写一个程序,这样用户可以根据数据库中的日期值搜索一些东西。到目前为止,只要输入了整个日期,我就可以工作,但输入半个日期会导致解析错误 我现在正在使用这个代码 " ... where Date like " DateTime.Parse(textbox.text.trim()) " + %;" 我想看看是否有一种方法可以看到用户只输入年份,或者不输入日期的月份和年份,或者如果只输入了半年,它就不会崩溃 在SQL中执行此操作的解决方

这看起来很明显,但我想知道C中是否有用于匹配字符串的通配符。 我想写一个程序,这样用户可以根据数据库中的日期值搜索一些东西。到目前为止,只要输入了整个日期,我就可以工作,但输入半个日期会导致解析错误 我现在正在使用这个代码

" ... where Date like " DateTime.Parse(textbox.text.trim()) " + %;"
我想看看是否有一种方法可以看到用户只输入年份,或者不输入日期的月份和年份,或者如果只输入了半年,它就不会崩溃

在SQL中执行此操作的解决方案本身并不重要

解决方案1:

public static class MyStringExtensions
{
  public static bool Like(this string toSearch, string toFind)
  {
   return new Regex(@"\A" + new Regex(@"\.|\$|\^|\{|\[|\(|\||\)|\*|\+|\?|\\").Replace(toFind, ch => @"\" + ch).Replace('_', '.').Replace("%", ".*") +  @"\z", RegexOptions.Singleline).IsMatch(toSearch);
  }
}

examples:
bool willBeTrue = "abcdefg".Like("abcd_fg");
bool willAlsoBeTrue = "abcdefg".Like("ab%f%");
bool willBeFalse = "abcdefghi".Like("abcd_fg");
解决方案2:

madate.ToString().Contain("myvalue")
madate.ToString().StartWith("myvalue")
madate.ToString().EndWith("myvalue")
或使用sql: 其中CONVERTVARCHAR24,yourdate,103类似于“%yourvalue%”

解决方案1:

public static class MyStringExtensions
{
  public static bool Like(this string toSearch, string toFind)
  {
   return new Regex(@"\A" + new Regex(@"\.|\$|\^|\{|\[|\(|\||\)|\*|\+|\?|\\").Replace(toFind, ch => @"\" + ch).Replace('_', '.').Replace("%", ".*") +  @"\z", RegexOptions.Singleline).IsMatch(toSearch);
  }
}

examples:
bool willBeTrue = "abcdefg".Like("abcd_fg");
bool willAlsoBeTrue = "abcdefg".Like("ab%f%");
bool willBeFalse = "abcdefghi".Like("abcd_fg");
   where CONVERT(VARCHAR(24),yourdate, 103) like '%yourvalue%'
解决方案2:

madate.ToString().Contain("myvalue")
madate.ToString().StartWith("myvalue")
madate.ToString().EndWith("myvalue")
或使用sql:
其中CONVERTVARCHAR24,yourdate,103类似于“%yourvalue%”

听起来像是解析用户输入以与db日期值匹配。您可以改为字符串化db date值,以检查它是否包含原始用户输入,这样就不会发生解析错误。对于实际的模式匹配需求,请参见Regex classI,如果不涉及JavaScript,我会更喜欢它,因为我也想学习C通配符,但我找不到任何显示C wilcardsRegex!=javascriptI只是在谈论stringify,我认为它是使用JSONUse DateTimePicker而不是用户输入的文本框实现的。听起来像是解析用户输入以匹配db日期值。您可以改为字符串化db date值,以检查它是否包含原始用户输入,这样就不会发生解析错误。对于实际的模式匹配需求,请参见Regex classI,如果不涉及JavaScript,我会更喜欢它,因为我也想学习C通配符,但我找不到任何显示C wilcardsRegex!=javascriptI只是在谈论stringify,我认为它是用JSONUse DateTimePicker而不是用户输入的文本框实现的。正确的输入格式将是dd/MM/yyyy,但可能是MM/yyyy如果确切日期未知,请像这样构建SQL,从表中选择*将YourDate设置为varchar50,如“%yourvalue%”它会将dd/MM/yyyyy更改为MMM dd yyyyyy您是什么数据库?你总是把一个约会变成一个角色,然后做一个类似的动作,我不明白,对不起,我的英语不是很好。在SQL Server中,您可以使用Convert函数,在DB2 VARCHAR_FORMATMYDATE,'YYYY/MM/DD'中,我正在使用SQL Server,这只是因为我是新来的。正确的输入格式将是dd/MM/yyyy,但可能是MM/yyyy如果确切日期未知,请像这样构建SQL,从表中选择*将YourDate设置为varchar50,如“%yourvalue%”它会将dd/MM/yyyyy更改为MMM dd yyyyyy您是什么数据库?你总是把一个约会变成一个角色,然后做一个类似的动作,我不明白,对不起,我的英语不是很好。在SQL Server中,您可以使用Convert函数,在DB2 VARCHAR_FORMATMYDATE中,“YYYY/MM/DD”我使用的是SQL Server,只是我是新的。
   where CONVERT(VARCHAR(24),yourdate, 103) like '%yourvalue%'