sql查询非年份开头的
时间: 2024-02-17 19:02:23 浏览: 18
你可以使用SQL的LIKE运算符和通配符来查询非年份开头的数据。假设你要查询一个表中所有不以年份开头的字符串,可以使用以下SQL语句:
```
SELECT * FROM table_name WHERE column_name NOT LIKE '____%'
```
这个查询语句中,LIKE '____%' 表示以四个字符开头的字符串,也就是以年份开头的字符串。NOT LIKE 表示排除这些字符串,查询出不以年份开头的数据。其中,下划线(_)表示任意单个字符的通配符,百分号(%)表示任意多个字符的通配符。
相关问题
sql正则匹配身份证号
可以使用MySQL的正则表达式函数REGEXP来匹配身份证号。身份证号的正则表达式可以参考以下代码:
```
SELECT * FROM table_name WHERE id_number REGEXP '^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dX]$';
```
其中,id_number为身份证号所在的列名,正则表达式中的^表示匹配字符串的开头,$表示匹配字符串的结尾,[1-9]\\d{5}表示前6位为非零数字,(18|19|20)\\d{2}表示年份为18、19或20开头的4位数字,(0[1-9]|1[0-2])表示月份为01到12之间的2位数字,(0[1-9]|[12]\\d|3[01])表示日期为01到31之间的2位数字,\\d{3}表示后面3位为任意数字,[\\dX]表示最后一位为数字或者大写字母X。
sql server验证身份证号的正则表达式
下面是一个用于验证中国身份证号的正则表达式:
```sql
^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[0-9xX]$
```
该正则表达式的含义如下:
- `^`:匹配字符串的开始位置。
- `[1-9]`:匹配第一位数字,不能为0。
- `\d{5}`:匹配6-10位数字。
- `(19|20)\d{2}`:匹配出生年份,必须是19或20开头的4位数字。
- `(0[1-9]|1[0-2])`:匹配出生月份,必须是01-12之间的2位数字。
- `(0[1-9]|[1-2]\d|3[0-1])`:匹配出生日期,必须是01-31之间的2位数字。
- `\d{3}`:匹配身份证号码的倒数第二位到第四位(顺序是倒过来的)。这三位数字是随机数。
- `[0-9xX]`:匹配身份证号码的最后一位,可以是数字0-9或字母x或字母X。
- `$`:匹配字符串的结束位置。
你可以在查询中使用 `LIKE` 操作符和该正则表达式来验证身份证号,例如:
```sql
SELECT *
FROM my_table
WHERE id_card_number LIKE '^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[0-9xX]$'
```