AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[regex](dba)

Martin Hope
ma1169
Asked: 2021-09-17 06:11:19 +0800 CST

正则表达式替换以在开头忽略某些模式(如果存在)并格式化其余部分

  • 0

如果存在,如何使用正则表达式替换忽略国家代码,我尝试使用

select REGEXP_REPLACE(phone_number,'^/(?:011.44.)([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})$',
'\1-\2-\3') regex_output
from employees;

但它不起作用,下一个适用于格式515.123.4567

'([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})$'

但他们有一些电话号码011.44.1345.729268,如果可能的话,我想忽略 011.44 如果存在于数字的开头,使用一种正则表达式语法。

这应该是忽略语法,但它不起作用,^/(?:011.44.)或者^/(?!011.44.)我也^/(?!([[:digit:]]{3})\.([[:digit:]]{2})\.)再次尝试不起作用注意我可以使用其他函数来做到这一点,这个问题仅与正则表达式有关,我正在使用 oracle HR 数据库

--------------------------------------------------
|  original numbers     |      expected output   |
--------------------------------------------------
|       phone_number    |     regex_output       |
--------------------------------------------------
|   515.123.4567        |   515-123-4567         | 
|   515.123.4567        |   515-123-4567         | 
|   515.123.4567        |   515-123-4567         | 
|   515.123.4567        |   515-123-4567         | 
|   011.44.1345.729268  |   134-572-9268         | 
|   011.44.1345.729268  |   134-572-9268         |
|   011.44.1345.729268  |   134-572-9268         |
|   011.44.1345.729268  |   134-572-9268         |
--------------------------------------------------

小提琴样本


更新:

如果其他人想知道我发现在 oracle中不支持非捕获组

(?:...),非捕获组,不支持,您应该将它们替换为捕获组。(请注意, (:? 不是非捕获组,它只是模式中第二个捕获组开头的可选冒号)。 -- Wiktor Stribiżew

oracle-12c regex
  • 1 个回答
  • 402 Views
Martin Hope
ivailonmarinov
Asked: 2021-06-18 02:03:39 +0800 CST

使用 RegEx 查找特定字符的列表

  • 0

我正在尝试编写一个查询(Postgres 8.2.15),它正在检查 column1 中的值是否包含:

  1. 仅限英文字母(AZ),不应包含来自西班牙语、阿拉伯语、德语等的变音/变音符号的特定字符。
  2. 允许使用单个空格、点、破折号、和号、撇号、括号和管道。

我有以下代码,它适用于空格、点和破折号,但是当我将其他一些符号插入到列表中时,查询没有产生正确的结果:

select
    column1,
    case 
        when column1 !~ '^.*[^A-Za-z0-9 .-].*$'
        then 'ok' 
        else 'not ok' 
        end as "check",
from 
    table1

如何使用&、撇号、括号和管道扩展列表?

postgresql regex
  • 1 个回答
  • 1757 Views
Martin Hope
Jahziel Rae Arceo
Asked: 2021-02-10 16:29:59 +0800 CST

在 SIMILAR TO 中使用插入符号 (^) 进行模式列表匹配否定,在 Redshift 中使用 ~ 查询

  • 0

我对在 Redshift 中使用 POSIX 正则表达式很陌生。老实说,我认为这种模式必须兼容。

[^A-Za-z0-9\\.\\,-]+

但是,正如我尝试过这样的查询

SELECT * FROM my_table WHERE string_column ~ '[^A-Za-z0-9\\.\\,-]+';

它给了我一个与我喜欢的不匹配的结果,并且似乎将插入符号视为字符文字。我也试过用[^[:alnum:]]没用。发生这种情况的原因可能是什么?我是否输入了错误,或者这是 Redshift 或 JDBC 驱动程序中的限制?

我目前正在通过 JetBrains DataGrip(最新版本)运行查询,并使用最新的 Amazon Redshift JDBC 驱动程序运行它。

redshift regex
  • 1 个回答
  • 152 Views
Martin Hope
Sarov
Asked: 2020-12-01 07:12:31 +0800 CST

REGEXP_SUBSTR 和 REGEXP_EXTRACT 有什么区别?

  • 0

REGEXP_SUBSTR 和 REGEXP_EXTRACT 有什么区别?

据我所知,他们似乎在做同样的事情。副作用是否存在一些差异,或者它们对某些输入的表现如何?我怎么知道该选择哪个?

db2 regex
  • 1 个回答
  • 160 Views
Martin Hope
kenorb
Asked: 2020-10-24 11:10:57 +0800 CST

如何从单个列中提取证书属性并拆分为多个?

  • 1

在我的表中,我有一个cert_attr存储Certificate X.509 Attributes的字段(比如说) 。

这是 3 行的示例(每行对应一个字段):

"CN=User1, OU=Eng, O=Company Ltd, L=D4, S=Dublin, C=IE"
"CN=User2, OU=Eng, O=Company Ltd, L=D2, S=Dublin, C=IE"
"OU=Eng, O=Company Ltd"

我正在尝试使用SELECT以下方式将字段的值拆分为单独的列:

SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(cert_attr, "CN=", -1), ", ", 1) as CN,
SUBSTRING_INDEX(SUBSTRING_INDEX(cert_attr, "OU=", -1), ", ", 1) as OU,
SUBSTRING_INDEX(SUBSTRING_INDEX(cert_attr, "O=", -1), ", ", 1) as O,
SUBSTRING_INDEX(SUBSTRING_INDEX(cert_attr, "L=", -1), ", ", 1) as L,
SUBSTRING_INDEX(SUBSTRING_INDEX(cert_attr, "ST=", -1), ", ", 1) as ST,
SUBSTRING_INDEX(SUBSTRING_INDEX(cert_attr, "C=", -1), ", ", 1) as C
FROM mytable

这可行,但是缺少某些属性的行存在问题。

因此,在字段字符串中缺少属性的情况下,我希望该列为空,但它会返回整个字符串。

前两行示例按预期工作,正确返回以下列:

| CN    | OU  | O           | L  | S.     | C  |
| ----- | --- | ----------- | -- | ------ | -- |
| User1 | Eng | Company Ltd | D4 | Dublin | IE |
| User2 | Eng | Company Ltd | D2 | Dublin | IE |

问题在于第 3 行示例,我希望在找不到子字符串模式时返回一个空字符串:

| CN         | OU  | O           | L          | S.         | C          |
| ---------- | --- | ----------- | ---------- | ---------- | ---------- |
| OU=Eng,... | Eng | Company Ltd | OU=Eng,... | OU=Eng,... | OU=Eng,... |

而是返回整个字符串。

问题:

SUBSTRING_INDEX()当找不到子字符串时,有什么方法可以返回一个空字符串?或者也许还有其他功能(如正则表达式)或其他解决方法?

我的目标是通过将这些属性放在具有有效值的单独列中来将数据提取到 TSV 文件中:

mysql mytable < query.sql > cert_attributes.tsv
mysql regex
  • 1 个回答
  • 47 Views
Martin Hope
Luca Reghellin
Asked: 2019-10-18 02:54:01 +0800 CST

如何使用 mysql 正则表达式子集语法选择除“00”之外的任何几个数字?

  • 0

我刚刚发现 mysql 不支持完整的正则表达式语法。我必须选择除 00 之外的任何几个数字(因此,11、54、02 都可以,但不能选择 00)。

通常我会使用这样的负前瞻:

(?!00)[0-9]{2}

但在 mysql 中不支持。那么我该怎么做呢?

mysql regex
  • 1 个回答
  • 79 Views
Martin Hope
Luca Reghellin
Asked: 2019-10-17 07:12:32 +0800 CST

如何用正则表达式查询mysql表?

  • 0

我正在使用正确的正则表达式,已经用其他工具测试过。但是在mysql中似乎不能正常工作。说这个数据:

在此处输入图像描述

我想选择所有以 2 个非数字后跟一个点开始的记录,然后是一个数字,后跟一个 .00 序列(例如 DE.1.00.00.00.00)

\D{2}\.\d?\.0{2}.0{2}.0{2}.0{2}

以上单独使用通常有效。但是在 mysql 上,像下面这样的简单查询是行不通的。它将返回一个包含所有列且没有任何错误但也没有任何值的表。为什么?

SELECT *
FROM V35_CATEGORIE cat
WHERE cat.CategoriaCodice REGEXP '\D{2}\.\d?\.0{2}.0{2}.0{2}.0{2}'
mysql regex
  • 1 个回答
  • 96 Views
Martin Hope
Anu
Asked: 2019-06-20 16:56:52 +0800 CST

日期模式正则表达式与 PostgreSQL 查询中的记录不匹配?

  • 0

我正在使用 PostgreSQL 中的一个数据集,这很快就会变得混乱。我编写了一些正则表达式操作来查找表记录中的日期模式。由于我没有为查找任何类型的日期模式定义通用的正则表达式!因此,我使用数据库中的一些示例创建了一些示例,例如:

9/18/2010 6:17:00 AM
 05/21/2014
Date 2008-02-13 
7/18/2016 9:54 PM  
 2000-04-20
Booked:1/16/2011 6:45:00 AM (2008-09-01 12:35:45 )
on January 3, 2008 
on July 3, 2002 
23 Mar 2017
5 Feb 2004  
 January 3, 2008 
January 31, 2001
December 19, 2007  
February 2009
February 30
- Feb 3, 2011 
9 Jun 2010   

这个 REGEX匹配一些日期格式,并且能够在数据库中找到记录!:

select count(*) from gallery_image where description ~* '(\d+)\/(\d+)\/(\d+)|(\d+)-(\d+)-(\d+)';

但是,这个正则表达式与示例匹配,但无法在数据库中找到单个记录,即使它们存在于数据库中,因为我已经从中获取了所有示例。?

select count(*) from gallery_image where description ~* '(\b\d{1,2}\D{0,3})?\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)\D?(\d{1,2}\D?)?\D?((19[7-9]\d|20\d{2})|\d{2})';

谁能指出我在第二个查询或 REGEX 模式中犯的错误,它可以正常工作,但在 PostgreSQL 查询中使用时不能正常工作?

postgresql regex
  • 1 个回答
  • 944 Views
Martin Hope
SQLPRODDBA
Asked: 2019-05-14 13:46:19 +0800 CST

在 SQL Server 查询编辑器中需要正则表达式的帮助

  • 0

我有一个包含数千行代码的文件,其索引详细信息如下:

IF NOT EXISTS (SELECT 1 FROM SYS.INDEXES WITH (NOLOCK) WHERE name = 'IX_Test1' AND [object_id] = OBJECT_ID(N'Test1', N'U'))  
BEGIN  
 CREATE UNIQUE INDEX [IX_Test1] ON [Test1]  
(  
[cd] ASC   
)   
 WITH (FILLFACTOR = 90,  IGNORE_DUP_KEY = OFF,  PAD_INDEX = OFF,  ALLOW_ROW_LOCKS = ON,  ALLOW_PAGE_LOCKS = ON,  STATISTICS_NORECOMPUTE = OFF,  DROP_EXISTING = OFF ) ON [PRIMARY]  
END  


IF NOT EXISTS (SELECT 1 FROM SYS.INDEXES WITH (NOLOCK) WHERE name = 'IX_Test2' AND [object_id] = OBJECT_ID(N'Test2', N'U'))  
BEGIN  
 CREATE INDEX [IX_Test2] ON [Test2]  
(  
[AdID] ASC , [Date] ASC   
)  INCLUDE ( [AID], [LM] )   
 WITH (FILLFACTOR = 90,  IGNORE_DUP_KEY = OFF,  PAD_INDEX = OFF,  ALLOW_ROW_LOCKS = ON,  ALLOW_PAGE_LOCKS = ON,  STATISTICS_NORECOMPUTE = OFF,   DROP_EXISTING = OFF ) ON [PRIMARY]  
END

我想像下面这样格式化这些数据以进行比较:

IF NOT EXISTS (SELECT 1 FROM SYS.INDEXES WITH (NOLOCK) WHERE name = 'IX_Test1' AND [object_id] = OBJECT_ID(N'Test1', N'U'))  BEGIN   CREATE UNIQUE INDEX [IX_Test1] ON [Test1]  (  [cd] ASC   )    WITH (FILLFACTOR = 90,  IGNORE_DUP_KEY = OFF,  PAD_INDEX = OFF,  ALLOW_ROW_LOCKS = ON,  ALLOW_PAGE_LOCKS = ON,  STATISTICS_NORECOMPUTE = OFF,  DROP_EXISTING = OFF ) ON [PRIMARY]  END   
IF NOT EXISTS (SELECT 1 FROM SYS.INDEXES WITH (NOLOCK) WHERE name = 'IX_Test2' AND [object_id] = OBJECT_ID(N'Test2', N'U'))  BEGIN   CREATE INDEX [IX_Test2] ON [Test2]  (  [AdID] ASC , [Date] ASC   )  INCLUDE ( [AID], [LM] )    WITH (FILLFACTOR = 90,  IGNORE_DUP_KEY = OFF,  PAD_INDEX = OFF,  ALLOW_ROW_LOCKS = ON,  ALLOW_PAGE_LOCKS = ON,  STATISTICS_NORECOMPUTE = OFF,   DROP_EXISTING = OFF ) ON [PRIMARY]  END

所以基本上 IF 和 END 之间的所有内容都应该排成一行。我尝试使用 REGEX 来完成它,但没有得到它的工作。如果有人可以在这方面帮助我,那将是很大的帮助。

如果您需要更多详细信息,请告诉我。

regular-expression regex
  • 1 个回答
  • 107 Views
Martin Hope
Jean Louis
Asked: 2018-08-14 23:54:37 +0800 CST

如何在 Postgresql 中使用 regexp_replace 清除除字符串开头的 + 以外的所有非数字?

  • 1

与评论相关,我想找到一种方法来清除PostgreSQL 中除字符串开头regexp_replace以外的任何非数字。+

例如+(7)9125415501应成为+79125415501

postgresql regex
  • 1 个回答
  • 688 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve