Как определить и избежать записей, основанных на его левом значении, строковые значения являются числовыми в SQL-запросе? - PullRequest
0 голосов
/ 26 октября 2018

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

Таблица имеет 3 столбца

AgentId, AgentName, AgentTextCode

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

Образцы данных и выходные данные:

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

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

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

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

0 голосов
/ 26 октября 2018

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

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

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

...