【问题标题】:Wildcard for string before @ character@ 字符前的字符串通配符
【发布时间】:2021-11-01 11:16:15
【问题描述】:

我将如何使用通配符来过滤掉以下任何排列。 “@”字符之前可以有任意数量的零。 示例

   0@test.com
   000000@test.com
   00000000000@test.com

基本上,我正在寻找通配符任何电子邮件地址,@ 字符前只有零。

任何帮助将不胜感激 谢谢!

Smiddy

【问题讨论】:

  • 你试过 WHERE col LIKE '*@test.com'
  • 添加一些不同的样本数据,并指定预期的结果。并为使用的 dbms 添加标签。
  • @Sergey,这不是像 '%@test.com' 吗?

标签: sql wildcard


【解决方案1】:

T-SQL:

删除@之前只有零的所有值

SELECT 
    * 
FROM (SELECT  '000@test.com' AS[values]  ) [table]
WHERE
    LEN(REPLACE((LEFT([values],CHARINDEX('@',[Values])-1)),'0',''))  <> 0

-- LEFT & CHARINDEX : 得到@的结果 LEFT
-- LEN & REPLACE : 将所有 0 替换为 '' 后,任何仅包含零的电子邮件都将导致 len = 0。

【讨论】:

  • 对未指定 dbms 的问题的产品特定答案。至少告诉我们这是用于哪个 dbms。
  • 谢谢。我只是想删除在 @ 字符前只有零的任何电子邮件地址。
  • 我用代码编辑了建议的答案,以删除所有只有 zeo 的电子邮件地址
【解决方案2】:

我会用正则表达式解决它,但具体答案取决于您的数据库供应商和可用的语法。

  • PostgreSQL:

    SELECT * FROM table WHERE email ~ '^0+@'
    
  • MySQL:

    SELECT * FROM table WHERE email REGEXP '^0+@'
    

    同义词是email RLIKE '^0+@'REGEXP_LIKE(email, '^0+@')

  • Oracle:

    SELECT * FROM table WHERE REGEXP_LIKE(email, '^0+@')
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2011-09-04
    • 2017-10-28
    • 2015-01-13
    相关资源
    最近更新 更多