【问题标题】:Convert Regular Expression to SQL将正则表达式转换为 SQL
【发布时间】:2013-09-24 21:54:39
【问题描述】:

我有以下正则表达式:

 ^((\d{4}TS\d{0,4}[A-Z0-9]))$

我需要将其转换为 SQL 语句,例如

  SELECT DISTINCT field1 FROM WHERE LIKE Mask ORDER BY field2

【问题讨论】:

  • 正则表达式有很多LIKE模式没有的特性,看起来你正在使用其中的一些。
  • 如果你使用的是mssql你可以查看this
  • 请将您的 sql 标签替换为您正在使用的特定 DBMS 的标签。
  • 为什么你的正则表达式有两组括号?

标签: c# sql regex


【解决方案1】:

使用 MS Access 语法:

SELECT DISTINCT field1
FROM Table1
WHERE field1 LIKE '####TS[A-Z0-9]'
OR field1 LIKE '####TS#[A-Z0-9]'
OR field1 LIKE '####TS##[A-Z0-9]'
OR field1 LIKE '####TS###[A-Z0-9]'
OR field1 LIKE '####TS####[A-Z0-9]'
ORDER BY field2

使用 SQL Server 语法:

SELECT DISTINCT field1
FROM Table1
WHERE field1 LIKE '[0-9][0-9][0-9][0-9]TS[A-Z0-9]'
OR field1 LIKE '[0-9][0-9][0-9][0-9]TS[0-9][A-Z0-9]'
OR field1 LIKE '[0-9][0-9][0-9][0-9]TS[0-9][0-9][A-Z0-9]'
OR field1 LIKE '[0-9][0-9][0-9][0-9]TS[0-9][0-9][0-9][A-Z0-9]'
OR field1 LIKE '[0-9][0-9][0-9][0-9]TS[0-9][0-9][0-9][0-9][A-Z0-9]'
ORDER BY field2

使用 Oracle 语法:

SELECT DISTINCT field1
FROM Table1
WHERE REGEXP_LIKE(field1, '^[0-9]{4}TS[0-9]{0,4}[A-Z0-9]$')
ORDER BY field2

使用 MySQL 语法:

SELECT DISTINCT field1
FROM Table1
WHERE field1 REGEXP '^[0-9]{4}TS[0-9]{0,4}[A-Z0-9]$'
ORDER BY field2

【讨论】:

  • +1 适用于多个平台。顺便说一句,MS Sql 有 regex functions 工作得很好。
  • 我正在寻找转换为 MS Access SQL 语法的正则表达式。我不确定 paqogomez 是否建议我在 MS Access 上的 VBA 上使用带有 DLL 的 MS SQL。
  • @user914425 我为 MS Access 添加了一个示例。
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 2016-04-02
  • 1970-01-01
  • 2019-05-11
  • 2014-11-08
  • 2017-12-29
  • 2023-03-09
相关资源
最近更新 更多