Как использовать RegEx для сопоставления записей в SQL Server или BigQuery (стандартный диалект) - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь подготовить некоторые данные для таблицы, я пробовал на SQL Server 2008 R2 Express и BigQuery:

Моя таблица похожа на следующую:

create table location
(
    city varchar(50),
    country varchar(10)
)

insert into location (city) values ('Rumney, NH, US')
insert into location (city) values ('Hickory Hills, IL')
insert into location (city) values ('Patchogue, NY')
insert into location (city) values ('Wilton, NH')
insert into location (city) values ('Cedarville University, OH')
insert into location (city) values ('Shopshire, UK')
insert into location (city) values ('Dreilinden, Germany')
insert into location (city) values ('Jarjis, Tunisia')
insert into location (city) values ('Casca/RS, Brasil')

Я хочу выбрать все записи с городом в США, регулярное выражение, которое я использую:

(?!.*UK),\s(\w{2})$

Вот доказательство:

enter image description here

Мой запрос в MS SQL выглядит так:

SELECT * 
FROM location 
WHERE  city LIKE '(?!.*UK),\s(\w{2})$'

Он ничего не возвращает.

Я также пытался добавить % вокруг шаблона и PATINDEX, но Я все еще ничего не получаю.

--- В соответствии с @ mar c, MS SQL не принимает реальное регулярное выражение.

В BigQuery:

select location, REGEXP_CONTAINS(location, "(?!.*UK),\s(\w{2})$")  
from `bigquery-public-data.stackoverflow.users` 
limit 10;

Я вижу ошибку в редакторе (такая же ошибка, когда я заменяю двойные кавычки на одинарные):

enter image description here Чего мне здесь не хватает?

Большое спасибо, если вы можете помочь разобраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...