Естественный вид для SQL Server?

У меня есть столбец, который является обычно только числами (иногда, это - буквы, но это не важно).

Как я могу сделать это естественным видом?

В настоящее время виды как это: {1,10,11,12,2,3,4,5,6,7,8,9}

Я хочу это к виду как это: {1,2,3,4,5,6,7,8,9,10,11,12}

8
задан marc_s 2 July 2010 в 10:48
поделиться

3 ответа

IsNumeric "сломан", ISNUMERIC(CHAR(13)) возвращает 1 и CAST не работает.

Используйте ISNUMERIC(textval + 'e0'). Окончательный код:

ORDER BY
  PropertyName,
  CASE ISNUMERIC(MixedField + 'e0') WHEN 1 THEN 0 ELSE 1 END, -- letters after numbers
  CASE ISNUMERIC(MixedField + 'e0') WHEN 1 THEN CAST(MixedField AS INT) ELSE 0 END,
  MixedField

Вы можете смешивать параметры порядка...

8
ответ дан 5 December 2019 в 21:16
поделиться

Вы связали, используя:

'OrderBy ColumnName Asc'

в конце вашего запроса.

-3
ответ дан 5 December 2019 в 21:16
поделиться

Брось это. Кроме того, не забудьте использовать IsNumeric, чтобы убедиться, что вы получаете обратно только числа (если они включают буквы, это важно;).

SELECT textval FROM tablename
WHERE IsNumeric(textval) = 1
ORDER BY CAST(textval as int)

Также приведите к типу данных, который будет содержать наибольшее значение.

Если вам также нужны нечисловые значения в результирующем наборе, просто добавьте запрос UNION, где IsNumeric = 0 (упорядочить по своему усмотрению) либо до, либо после.

2
ответ дан 5 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: