Mysql 搜索邮政编码
Mysql Search Postcodes
我想创建一个 mysql 搜索查询,它将搜索 post代码 这是我目前所做的
SELECT * FROM orders where ( InvoicePostcode LIKE 'b%' OR InvoicePostcode LIKE 'ws%') order by InvoiceNumber asc
我只想显示以 b 或 ws 开头的 post 代码,但问题是一些 post 在 post 代码的开头包含 bb 或 BS 例如
BS24 8EE
BB9 8SY
唯一应该显示的以 b 开头的像这样的 B65 0NQ 我不确定如何通过只查看 [=20 中数字之前开头的字母来检查 post 代码=]代码
您可以使用 pattern matching 来解决这个问题。
你需要知道的是你正在搜索的模式,举个例子,如果你正在搜索所有以 B 开头的邮政编码,那么你就知道这些邮政编码会
- 必须有第一个字符为 B。在 link 到 select 中有示例第一个字符 (^) 和 1 个实例({1} 等于 'B' 或 'b'.
- 第二个字符可以是任意数字
同样,您也可以对所有其他模式执行此操作。
您可以尝试使用正则表达式来排除某些模式:
在下面,我排除了包含 B 后跟一个字母的发票邮政编码
SELECT * FROM orders
WHERE (InvoicePostcode LIKE 'b%' AND NOT InvoicePostcode RLIKE '^(B[A-Z])')
OR (InvoicePostcode LIKE 'ws%' AND NOT InvoicePostcode RLIKE '^(WS[A-Z])')
ORDER BY InvoiceNumber ASC
您可以使用 REGEXP 子句。
例如:
select * 来自订单,其中 (InvoicePostcode REGEXP '^B[^BS].' OR InvoicePostcode REGEXP '^WS.')
'^B[^BS].*' 在这里它将忽略以 BB 或 BS 开头的单词。
希望对您有所帮助。
SELECT * FROM orders
WHERE (InvoicePostcode LIKE 'b%' AND NOT InvoicePostcode RLIKE '^(B[A-Z])')
OR (InvoicePostcode LIKE 'ws%' AND NOT InvoicePostcode RLIKE '^(WS[A-Z])')
ORDER BY InvoiceNumber ASC
请参考:https://www.guru99.com/regular-expressions.html
RLIKE 运算符执行字符串表达式与模式的模式匹配。该模式作为参数提供。下面的 MySQL 语句将查找以“B”开头的作者姓名。 ‘^’已用于匹配名称的开头。
SELECT * FROM orders WHERE InvoicePostcode RLIKE '^B';
[A-Z]
匹配任何大写字母
[a-z]
匹配任何小写字母
'^(B[A-Z])'表示它将作为第一个字母 B 而下一个是否是 A 到 Z 则不是。
我想创建一个 mysql 搜索查询,它将搜索 post代码 这是我目前所做的
SELECT * FROM orders where ( InvoicePostcode LIKE 'b%' OR InvoicePostcode LIKE 'ws%') order by InvoiceNumber asc
我只想显示以 b 或 ws 开头的 post 代码,但问题是一些 post 在 post 代码的开头包含 bb 或 BS 例如
BS24 8EE
BB9 8SY
唯一应该显示的以 b 开头的像这样的 B65 0NQ 我不确定如何通过只查看 [=20 中数字之前开头的字母来检查 post 代码=]代码
您可以使用 pattern matching 来解决这个问题。
你需要知道的是你正在搜索的模式,举个例子,如果你正在搜索所有以 B 开头的邮政编码,那么你就知道这些邮政编码会
- 必须有第一个字符为 B。在 link 到 select 中有示例第一个字符 (^) 和 1 个实例({1} 等于 'B' 或 'b'.
- 第二个字符可以是任意数字
同样,您也可以对所有其他模式执行此操作。
您可以尝试使用正则表达式来排除某些模式:
在下面,我排除了包含 B 后跟一个字母的发票邮政编码
SELECT * FROM orders
WHERE (InvoicePostcode LIKE 'b%' AND NOT InvoicePostcode RLIKE '^(B[A-Z])')
OR (InvoicePostcode LIKE 'ws%' AND NOT InvoicePostcode RLIKE '^(WS[A-Z])')
ORDER BY InvoiceNumber ASC
您可以使用 REGEXP 子句。
例如: select * 来自订单,其中 (InvoicePostcode REGEXP '^B[^BS].' OR InvoicePostcode REGEXP '^WS.')
'^B[^BS].*' 在这里它将忽略以 BB 或 BS 开头的单词。
希望对您有所帮助。
SELECT * FROM orders
WHERE (InvoicePostcode LIKE 'b%' AND NOT InvoicePostcode RLIKE '^(B[A-Z])')
OR (InvoicePostcode LIKE 'ws%' AND NOT InvoicePostcode RLIKE '^(WS[A-Z])')
ORDER BY InvoiceNumber ASC
请参考:https://www.guru99.com/regular-expressions.html
RLIKE 运算符执行字符串表达式与模式的模式匹配。该模式作为参数提供。下面的 MySQL 语句将查找以“B”开头的作者姓名。 ‘^’已用于匹配名称的开头。
SELECT * FROM orders WHERE InvoicePostcode RLIKE '^B';
[A-Z] 匹配任何大写字母
[a-z] 匹配任何小写字母
'^(B[A-Z])'表示它将作为第一个字母 B 而下一个是否是 A 到 Z 则不是。