Регулярное выражение для формата времени

У меня есть формат времени, например hh: mm ss в таблице базы данных. Я написал запрос, чтобы получить эти значения из столбца.

declare @reg nvarchar(100) set @reg = '^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$' select time from table1 where time = @reg 

Однако, это не показывает мне результаты. Как получить результаты?

Изменить: Пример данных (вот что я хочу найти из colum):

 23:36 26 08:55 46 

Вот что я хочу изменить в этой колонке:

 23:36:26 08:55:46 

Проблема в том, что вы используете строки вместо соответствующего типа, time . Единственное реальное решение – исправить тип поля.

Чтобы преобразовать данные, вам не нужно регулярное выражение, просто замените с : перед литьем, например:

 select cast(replace(time,' ',':') as time) 

Выполнение:

 select cast(replace('08:55 46',' ',':') as time) 

Возвращает значение времени 08:55:46

Возможно, у вас может возникнуть соблазн снова направить строку на строку, используя ту же команду, например: cast(cast(replace(time,' ',':') as time) as nvarchar(8)) но это не исправит неправильное типа. Вы будете вынуждены анализировать текст за раз, каждый раз, когда хотите отправить его клиенту или выполнить арифметику времени.

Если вы хотите использовать временную переменную или параметр времени, просто укажите соответствующий тип, например:

 declare @myParam time ='23:12:34' 

Или

 Create Procedure MyProc (@myTimeParam time) ... 

Проверьте это . Кажется, SQL SERVER не поддерживает чистое регулярное выражение, вы должны изменить свой запрос на что-то вроде этого:

 declare @reg nvarchar(100) set @reg = '[01][0-9]:[0-5][0-9]:[0-5][0-9]' select time from table1 where time like @reg 
  • регулярное выражение sql server
  • Замените img src из столбца Html в Sql Sqrver
  • SQL Server Выберите LIKE Regex, эквивалентный '?' или '\\ s *'
  • Возвращать sql-строки, в которых поле содержит ТОЛЬКО не буквенно-цифровые символы
  • Нуль или более случаев совпадения шаблонов в хранимой процедуре sql
  • Regex для удаления escape-символов (определенных) в C #
  • Запрос SQL Server с использованием регулярного выражения?
  • Регулярное выражение для приема 5 символов с необязательным
  • SQL Server: удаление RegEx ASCII
  • Регулярные выражения в SQL
  • Каков наилучший способ хранения и поиска почтовых адресов с использованием базы данных sql-сервера и платформы .NET?
  • Interesting Posts

    Добавление дополнительной группы в рекурсивный CTE

    Получайте количество строк и сумм по четверти даты, если другой столбец не выходит из значения в SQL Server

    Оператор case для выполнения кода

    Согласование единственного числа, ближайшего к диапазону в SQL Server

    Извлечение текущей текущей ставки из двух таблиц MySQL

    Цикл foreach SQL Server для чтения одной записи за раз из таблицы, а затем использовать ее для вставки или обновления

    Единый запрос SQL с входным параметром tvp, когда tvp не содержит строки

    Ошибка транспортного уровня с простым выбором запроса

    SQL UNION – можно ли использовать результат из первого SELECT во втором SELECT

    Имеет ли Sybase операцию поиска индекса (например, SQL Server) в плане выписки?

    SQL Server CTE-запрос не получает желаемого результата

    Почему явный COLLATE не отменяет сортировку базы данных?

    Строка подключения SQL Server 2014 с именем экземпляра

    Не удалось получить переменное значение ReadWrite в компоненте скрипта из SSIS

    как обновить все строки указанной группы данных на SQL-сервере на основе условия?

    Давайте будем гением компьютера.