Где условие для типа данных столбца - PullRequest
0 голосов
/ 09 января 2019

У меня есть таблица с несколькими столбцами и 3,5 миллиона строк. Я пытаюсь написать оператор выбора, в котором я могу выбрать все строки, в которых тип данных столбца B не попадает под тип данных Дата . Простой пример

Column A     Column B
abc          10/20/2014
cde          abd 04/10/201 e

вывод будет

Column A            Column B
cde                abd 04/10/201 e  

Примечание: столбец B - это nvarchar (255), ноль как тип данных

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Посмотрите на TRY_CONVERT().

select ColumnA
    , ColumnB
from YourTable
where TRY_CONVERT(date, ColumnB) IS NULL
0 голосов
/ 09 января 2019

Вы можете использовать TRY_CAST() или TRY_CONVERT() и проверить на NULL

SELECT <Columns Here>
FROM <Table Name Here>
WHERE TRY_CAST(<Column Name Here> AS DATE) IS NULL;

Но я предлагаю изменить тип данных этого столбца на правильный тип данных, который является DATE / DATETIME, который гарантирует, что данные являются только датами, и вы не попадете в эту проблему. Хранение дат в виде строк - это действительно плохая практика, которую вам следует избегать, поскольку эти типы данных существуют по причине, поэтому используйте их с умом. Это правильный путь.

...