Я много имени/поиски Добролюбова, и это действительно трудно получить право. Вы можете рассмотреть сортировку с помощью функции, аналогичной той, которая приведена ниже. Это будет в основном принимать две 8-значные даты (YYYYMMDD) и подсчитывать количество пропущенных цифр.
Например, эти пары даты имеют 1 промах соответствия цифры:
- 1976-10-20 и 1976-01-20 (10 против 01)
- 1976-10-20 и 1975-10 -20 (76 против 75)
В зависимости от того, сколько данных имеет дело с этим, это полезно для сортировки (например, для того, чтобы сначала набрать наилучшее совпадение), но не для фильтрации (потому что нет индексации).
ALTER FUNCTION dbo.BirthDateRank (@DOB1 DATE, @DOB2 DATE)
RETURNS INT
AS
BEGIN
-- 10/31/2016 --> 10312016
DECLARE @xDOB1 VARCHAR(10) = REPLACE(CONVERT(CHAR(10), @DOB1, 101), '/', '');
DECLARE @xDOB2 VARCHAR(10) = REPLACE(CONVERT(CHAR(10), @DOB2, 101), '/', '');
DECLARE @i INT = 0;
DECLARE @iRet INT = 0;
WHILE @i <= LEN(@xDOB1)
BEGIN
SET @iRet = @iRet + CASE WHEN SUBSTRING(@xDOB1, @i, 1) = SUBSTRING(@xDOB2, @i, 1) THEN 0 ELSE 1 END
SET @i = @i + 1
END
RETURN @iRet;
END;
GO
[Документация] (https://msdn.microsoft.com/en-CA/library/ms137786.aspx) говорит, что он будет делать точный поиск на не STR колоннах. Любые причины, по которым вы не можете преобразовать DOB в строку перед выполнением нечеткого преобразования? – ESG
Спасибо, я нашел отрывок, по какой-то причине я не обнаружил, что в первом чтении: «Только входные столбцы с типами данных DT_WSTR и DT_STR могут использоваться при нечетком сопоставлении. Точное совпадение может использовать любой тип данных DTS, кроме DT_TEXT, DT_NTEXT и DT_IMAGE. " – LearnByReading
@ESG:« Почему я не могу преобразовать DOB », что полностью победит цель. За этим последовали некоторые люди в той теме, которую я привел. Нечеткое совпадение не будет соответствовать «одному» на «два», скорее, оно может совпадать с «двумя» до «двух» или «twi». Он работает на основе формулы расстояния и общих опечаток и комбинаций опечаток. Преобразование цифр в строки просто не сделает ничего, потому что вы никогда не ошибетесь. – LearnByReading