Функция не с использованием NEWID () . Он использует значение строкового параметра с именем @newid
Если вы хотите выбрать случайную строку, используйте ORDER BY NEWID()
. Это генерирует новый непоследовательный GUID для каждой строки и упорядочивает по ним строки, эффективно создавая случайное упорядочение, например:
set @rndValue = (SELECT top 1 * FROM #temp ORDER BY newid())
Исходный запрос упорядочивает строки по константе и таким образом, не имеет никакого эффекта. Это ничем не отличается от использования
set @rndValue = (SELECT top 1 * FROM #temp ORDER BY 'potato')
Если вы проверите план выполнения запроса, то увидите, что операции SORT нет. Оптимизатор запросов просто удаляет неэффективное предложение ORDER BY
.
Наконец, NEWID () создает GUID , а не строку. Это 128-битное двоичное значение. Использование LOWER()
не имеет смысла