Как определить и избежать записей на основе того, что крайние левые строковые значения являются числовыми в sql-запросе?

У меня есть таблица AgentDetail, и мне нужно создать запрос, который возвращает только те записи, которые содержат оставшиеся 5 числовых цифр.

В таблице 3 столбца

AgentId, AgentName, AgentTextCode

где в столбце AgentTextCode может быть 5 цифр или любое текстовое значение (иногда 2 байта символа). Таким образом, выходные записи должны быть только теми, значение которых начинается с 5 цифр (десятичное значение невозможно).

Примеры данных и вывода:

enter image description here

1
0
40
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Здесь мы можем использовать LIKE:

SELECT
    AgentID, AgentName, AgentTextCode
FROM yourTable
WHERE AgentTextCode LIKE '[0-9][0-9][0-9][0-9][0-9]%';

Оператор SQL Server LIKE поддерживает некоторые примитивные возможности регулярных выражений, как показано выше.

Вы можете использовать IsNumeric и Substring из TSQL:

SELECT
    AgentID, AgentName, AgentTextCode
FROM yourTable
WHERE ISNUMERIC(Replace(Replace(substring(AgentTextCode, 1, 5),'+','A'),'-','A') + '.0e0') = 1;
GO

Ссылка здесь: CAST и IsNumeric

Это не сработает во всех случаях. Например, ISNUMERIC('$12.123') возвращает истину, но не все первые символы являются строго числами.

Tim Biegeleisen 26.10.2018 06:22

это будет обслуживать знаки +, -, $

Gauravsa 26.10.2018 06:48

Другие вопросы по теме