Я работаю с SQL-запросом, в котором мне нужно фильтровать на основе возвращаемого значения ISNUMERIC. ISNUMERIC важен, потому что в моем соединении я неявно преобразовываю значение в «int», поэтому VARCHAR - это нет-нет.T-SQL: Оценить ISNUMERIC перед соединением
Я рассмотрел порядок, в котором должны обрабатываться запросы, и обрабатывается FROM, а затем ON, которая находится перед WHERE. Есть ли способ, который я могу предложить, чтобы ISNUMERIC был оценен сначала БЕЗ использования подзапроса? Я не против Sub-Queries, мне просто интересно.
SELECT l.* FROM [dbo].[CRM_SD_Working_1] l
LEFT JOIN [dbo].[CRM_SD_Working_1] r ON l.[PlzVon] = r.[PlzBis] + 1
WHERE
ISNUMERIC(l.[PlzVon]) = 1
AND ISNUMERIC(l.[PlzBis]) = 1
AND l.PlzVon <> l.PlzBis
AND r.ID IS NULL
Не должно ли это предложение быть 'ISNUMERIC (r. [PlzBiz] = 1'? С r. вместо l.? – RBarryYoung
Поместите оператор CASE в JOIN по обе стороны от знака =, чтобы проверить IsNumberic(). –
У вас есть данные, аналогичные этим '' $ 5.1 ',' 1.4e1 ',' 4d9'' в столбце 'PlzVon' или' PlzBis'? –