Как проигнорировать escape-последовательности, сохраненные в строковой переменной PowerShell?

Вы можете использовать Group By для внутреннего запроса, а затем DATEDIFF

SELECT 
  Table1.EMP_ID, 
  Table1.EMP_NAME, 
  COALESCE(DATEDIFF(end_date, start_date),0) diff
FROM
(
   SELECT EMP_ID, MIN(START_DATE) START_DATE, MAX(END_DATE) END_DATE 
   FROM Table2
   GROUP By emp_ID
) t
RIGHT JOIN Table1 ON Table1.emp_id = t.emp_id

DB Fiddle

20
задан JasonMArcher 30 June 2010 в 22:16
поделиться

2 ответа

Используйте помехи escape() метод, они дают механизму регулярного выражения команду интерпретировать эти символы буквально, а не как метасимволы:

$id = [regex]::escape($id)

можно также повернуться, команда к одному лайнеру (-path может взять набор файлов):

Select-String -Path path\to\files\\* -Pattern ([regex]::escape($id)) -Quiet
32
ответ дан 30 November 2019 в 00:27
поделиться

Если строка $id уже содержит что-то как ВКЛАДКА, когда она передается Вам затем, я не знаю о созданном в методе для безопасного выхода из нее назад к "\t". Необходимо удостовериться, что сценарий передается корректная строка во-первых. Т.е. этому нужно к переданному 0x5C74 (\t) не 0x09 (ВКЛАДКА). Таким образом, выход должен быть сделан, когда строка поиска сначала определяется.

Regex. Escape выйдет из ВКЛАДКИ-> \t, но также выйдет из любого из этих символов, которые имеют значение в регулярных выражениях:

\, *, +?, |, {[, (), ^, $., #, и пробел

, например,  .-> \.

0
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: