2016-07-19 2 views
-1

Я использую этот кодВставить в SQL Макс +1 только цифры (предотвращение символов)

(SELECT (MAX(CODE) +1 WHERE ISNUMERIC([code]) = 1) 

Я хочу макс +1 только мои номера моей колонки предотвращение символов символов.

+0

Вы можете форматировать исходный код с помощью кнопки [Code Sample '{}'] (http://i.stack.imgur.com/VYd26.png) - я сделал это для вас в этот раз. –

ответ

2

ПРИМЕЧАНИЕ: ЭТОТ ВОПРОС БЫЛ ПОДТВЕРЖДЕНЫ MYSQL, КОГДА ЭТО ОТВЕТ ОТПРАВЛЕН.

Вы можете использовать substring_index() разделить значения, а затем вновь объединить их:

(SELECT CONCAT(SUBSTRING_INDEX(MAX(Code), '-', 1), '-', 
       SUBSTRING_INDEX(MAX(CODE), '-', -1) + 1 
      ) 
FROM . . . 
WHERE code LIKE '%NEW-1%' 
) 

Это предполагает, что данные символы не имеют переносы в них, и что значения после «1» все номера ,

Кроме того, это не пусковое число, это нули, но это хорошая идея для таких кодов - это гарантирует, что они всегда одинаковой длины и что они сортируются правильно.

+0

i get error SUBSTRING_INDEX 'не является признанным встроенным именем функции. Может быть, я использую sql 2000 – user6453809

+2

@ user6453809 Тогда не говорите, что вы используете MySQL ... –

+0

Извините. Или как я могу предотвратить столбцы с символами? Просто до максимального +1 к последнему столбцу с номерами – user6453809

0

MAX() function принимает выражения, а не только имена столбцов:

SELECT MAX(CASE ISNUMERIC(code) WHEN 1 THEN code END)+1 as next_code 
FROM (
    SELECT '15' AS code 
    UNION ALL SELECT ' 98 ' AS code 
    UNION ALL SELECT 'New-45' AS code 
) foo 
WHERE ISNUMERIC(code)=1; 
16 

(Link является SQL Server 2005, документы для SQL Server не 2000, по-видимому уже не на линии, но MAX() принадлежит к SQL стандарт в любом случае.)

Смежные вопросы