如何使用REGEXP选择数据而不包含扩展ASCII

时间:2016-11-23 06:08:18

标签: mysql sql regex

我只想用以下内容显示数据:

  1. 包含a-z

  2. 含有A-Z
  3. 包含数字0-9
  4. 在以下链接http://www.theasciicode.com.ar/extended-ascii-code/latin-diphthong-ae-uppercase-ascii-code-146.html
  5. 上包含可打印的ASCII字符

    我坚持使用这样的代码,请帮助指出上面的-4:

    select * from Delin where the address REGEXP '^ [A-Za-z0-9]'
    

    以下示例原始数据:

    enter image description here

    我希望像这样输出(这些图像显示的是-Z和只有可打印的符号):

    enter image description here

1 个答案:

答案 0 :(得分:1)

您的商品1-3(a - zA - Z0 - 9)都是第4项(可​​打印的ASCII字符),所以你只需关心后者。以下查询满足该标准:

SELECT * FROM Delin
 WHERE alamat REGEXP '^[ -~]+$';

字符类[ -~]表示从空格到波浪号的ASCII字符,包括所有可打印的ASCII字符,而不是其他字符。

您可以在SQL小提琴中看到它:http://sqlfiddle.com/#!9/6c7b8/1

术语说明:没有“扩展ASCII”这样的东西。 ASCII character set对应于0-127(含)。对应于大于127的数字的任何字符都不是ASCII。术语“扩展ASCII”经常被错误地应用于various non-ASCII encodings,在任何官方意义上都不是ASCII的“扩展”。