#sql #regex #vba
#sql #регулярное выражение #vba
Вопрос:
Я анализирую некоторые операторы SQL и нашел места, где оператор SELECT может быть:
SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]
и, как вы видите, во втором столбце есть a .
внутри квадратных скобок. Это приемлемо в Access SQL, но не в SQL Server. Я пытаюсь создать регулярное выражение, чтобы определить, когда есть .
внутри квадратных скобок, и заменить его на ].[
Я пробовал: [. ?](?![.])
что даст мне точку внутри квадратных скобок, но поиск не прекращается, когда он находит закрывающую скобку.
Я использую ECMAScript для совместимости с VBA, и у меня нет проблем с вложенными скобками.
Комментарии:
1. не могли бы вы просто заменить
].[
на.
, а затем заменить.
на].[
?2.
replace(replace("SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]","].[","."),".","].[")
3. @ScottCraner Мне нравится, как вы думаете, но это также позволит найти законные
.
«ы» и заменить их на].['. Example:
replace(replace(«ВЫБЕРИТЕ [tblCustomer] . [Имя пользователя], [tblCustomer. LastName], tblOrder. Order_No»,»].[«,».»),».»,»].[«)`4. исправьте, предполагалось, что все были
[]
.
Ответ №1:
Вы можете использовать
Поиск: ([w ).(?=w ])
Заменить на: $1].[
Смотрите демонстрацию регулярных выражений. Подробные сведения:
([w )
— Группа 1 ($1
):[
а затем любая одна или несколько букв, цифр или символов подчеркивания.
— точка(?=w ])
— позитивный прогноз, который требует одну или несколько букв, цифр или символов подчеркивания, а затем]
символ сразу справа от текущего местоположения.