Различаются ли реальные значения с плавающей точкой в ​​запросах SQL Server? - PullRequest
1 голос
/ 29 января 2009

Может кто-нибудь придумать причину сделать это:

SELECT * FROM TableA ORDER BY cast (приведение (RealColumnA как nvarchar (50)) как float) - где RealColumnA определяется как реальное в таблице

Бывший мой разработчик настаивал на том, что это необходимо для правильной сортировки вещественных чисел. Кто-нибудь может вспомнить причину, которая может быть правдой?

Приведение в предложении orderby - убийца с большой производительностью. Но я должен быть уверен, что в этом нет необходимости, прежде чем я его уберу.

Ответы [ 2 ]

5 голосов
/ 29 января 2009

Удали это. ORDER BY - это то, что вы ожидаете. И это, безусловно, будет убийцей производительности.

Правило № 1 о SQL. Опрос (и проверка) всех ваших (и других людей) предположений. (Особенно странные, как это.)

0 голосов
/ 29 января 2009

Это не имеет смысла. Особенно с CAST справа назад.

Единственное, что я могу видеть, - это если вы храните не float информацию в float и хотите, чтобы она сортировалась асибетически. Я думаю, вы могли бы хотеть это:

1
10
11
12
2
3
4
5
6
7
8
9

Но обычно, когда такая оптимизация хранения выполняется (например, SSN или номер телефона, сохраненный в int, например), подразумевается неявное заполнение слева, что означает, что любой ожидаемый тип сортировки действительно такой же, как и обычный числовой сортировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...