sql用where筛选两个同时匹配字段
时间: 2023-07-17 08:55:56 浏览: 179
要筛选两个字段同时匹配的记录,可以使用逻辑运算符AND来组合多个条件。例如,假设有一个名为"table"的表,其中有两个字段"field1"和"field2",你可以使用以下SQL查询来筛选同时匹配两个字段的记录:
```
SELECT *
FROM table
WHERE field1 = 'value1' AND field2 = 'value2';
```
这将返回"field1"等于"value1"且"field2"等于"value2"的记录。你可以根据实际情况修改具体的字段名和匹配值。
相关问题
用hive SQL写个字段去除空格后用正则匹配手机号的代码
### 回答1:
```
SELECT
regexp_replace(trim(column_name),'^(1[3|4|5|7|8][0-9]{9})|(\\+861[3|4|5|7|8][0-9]{9})$') as phone_number
FROM table_name;
```
说明:
- `trim(column_name)` 用来去除前后空格。
- `regexp_replace(trim(column_name),'^(1[3|4|5|7|8][0-9]{9})|(\\+861[3|4|5|7|8][0-9]{9})$')` 用来替换匹配到的手机号。正则表达式`^(1[3|4|5|7|8][0-9]{9})|(\\+861[3|4|5|7|8][0-9]{9})$` 匹配11位手机号码或者国内手机号前加+86的手机号码。
- `as phone_number` 用来给查询结果起别名。
- `FROM table_name` 指定查询的表。
注意:
- 确保hive 版本支持正则函数
- 更改表名和字段名
- 更改正则表达式根据你的需要。
### 回答2:
在Hive SQL中,我们可以使用正则表达式函数和字符串函数来实现字段去除空格后匹配手机号的代码。
首先,使用正则表达式函数`regexp_replace`去除字段中的空格,然后使用字符串函数`regexp_extract`提取匹配的手机号。
以下是代码示例:
```sql
SELECT col_name
FROM table_name
WHERE regexp_extract(regexp_replace(col_name, '\\s', ''), '(13[0-9]|14[579]|15[0-35-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}', 0) != '';
```
其中,`col_name`代表要匹配的字段名,`table_name`代表表名。
代码中使用了`regexp_replace(col_name, '\\s', '')`去除字段中的所有空格。反斜杠需要使用两个,因为在字符串中需要转义。
然后,将去除空格的结果作为第一个参数传递给`regexp_extract`函数,使用`'(13[0-9]|14[579]|15[0-35-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}'`作为正则表达式匹配手机号的模式。
最后,通过判断提取结果是否为空字符串,来筛选出匹配的手机号。
这样,我们就可以通过以上代码在Hive SQL中实现字段去除空格后匹配手机号的操作。
用SQL 如何在Access中筛选满足另一张表一个字段所有记录条件的不同数据
如果我理解正确,您的问题是如何在一个表中筛选出符合另一张表中一个字段所有记录条件的不同数据。您可以使用以下SQL语句实现:
```
SELECT DISTINCT [字段名称] FROM [表1] WHERE [字段名称] IN (SELECT DISTINCT [字段名称] FROM [表2]);
```
其中,[字段名称]是您要查询的字段名称,[表1]是您要查询的表名,[表2]是您要筛选条件的表名。使用IN关键字可以将两张表中的数据进行匹配,只返回符合条件的不同数据。使用DISTINCT关键字可以过滤掉重复的数据,只返回不同的条件数据。