Sql 选择在单个值中包含混合字符的行,例如“名称”列中的“Joh?n”

Sql 选择在单个值中包含混合字符的行,例如“名称”列中的“Joh?n”,sql,oracle,Sql,Oracle,在oracle表中: 1-VARCHAR列中的值包含非字母的字符 考虑一个场景,其中“姓氏”列中的名称包含常规字符a-Z、a-Z以及非英文字母的字符,例如“、”、“、”、“>”或类似字符 挑战是选择“姓氏”中名称为“.John”或“John”或“-John”或“Joh-n”的行 2-是否可以在日期定义列中包含非日期值?如果是,如何在oracle查询中选择此类记录 谢谢 我相信这会奏效: 从mytable中选择*其中REGEXP_LIKElast_名称“[^A-Za-z]” 至于你的第二个问题,我

在oracle表中:

1-VARCHAR列中的值包含非字母的字符

考虑一个场景,其中“姓氏”列中的名称包含常规字符a-Z、a-Z以及非英文字母的字符,例如“、”、“、”、“>”或类似字符

挑战是选择“姓氏”中名称为“.John”或“John”或“-John”或“Joh-n”的行

2-是否可以在日期定义列中包含非日期值?如果是,如何在oracle查询中选择此类记录


谢谢

我相信这会奏效:

从mytable中选择*其中REGEXP_LIKElast_名称“[^A-Za-z]”

至于你的第二个问题,我不确定。如果有人能补充我的问题来回答你的第二个问题,我会很高兴。我发现这个网站可能会有所帮助。
它解释了日期格式

如果我正确理解您的目标,您需要选择last_name列中包含名称“John”的行,但名称前、名称后甚至名称内可能还有其他字符。在这种情况下,这应该是有帮助的:

select * from tab where regexp_replace(last_name, '[^A-Za-z]+', '') = 'John'

谢谢你,齐克!我还可以包含一个不需要查找的空间吗?我的意思是“John Doe”在名称列中是一个ligit值。我的意思是名字和姓氏之间的空格是一个ligit字符。如何在列表“[^a-Za-z]”中包含空格。非常感谢。^在匹配括号中未包含的任何内容之前否定集合。因此,它将捕获任何字符与字母不同的名称。许多网站将帮助您创建正则表达式。对不起,我刚刚听懂了。你不想抓住空间。。。您可以像这样在集合中添加一个空格,它应该可以工作^谢谢你,托马斯。我运行了queery,它提取了记录,但将所有符合条件的名字改为“John”。我想,我应该解释一下,我正在查找表中所有包含无效字符的记录,请参见原始问题中名称中的示例,而不仅仅是一个特定的名称。如果这有帮助的话!对于2,日期类型的列只能保存有效日期。