2016-11-02 4 views
-1

Нужна помощь с SQL У меня есть таблица с EmployeeID нижеобновления SQL Query для целочисленного типа данных

11 
22 
1 
55 
2 

Я хотел обрезать последние цифры всех строк и получить результат в виде

1 
2 
1 
5 
2 
+1

Что вы пробовали? это выглядит довольно прямолинейным оператором обновления с строковыми функциями 'Update TableName set EmployeeID = left (EmployeeID, 1), где len (EmployeeID)> 1' предполагает неявное литье по типу данных int. Хотя это было бы ошибкой, если в столбце есть ПК или уникальный индекс. Не уверен, что вы действительно хотели бы сделать это на том, что кажется полем идентификатора. – xQbert

+0

Каков тип столбца идентификатора сотрудника? –

+0

Тип данных целое – Anjana

ответ

0

USE это один

CASE WHEN LEN(ColumnName)>1 THEN LEFT(ColumnName, LEN(ColumnName)-1) ELSE  ColumnName END 
+0

w hat происходит, если LEN (ColumnName) = 0 – Anjana

+0

, если это Zero, тогда выполните else part –

0

литая INT, как VARCHAR и использовать право выбора столько цифр, сколько вам нужно.

select cast(right(1,cast(EmployeeID as varchar)) as int) 

на самом деле просто делает

select right(1,employeeId) should work too. 

, если вы хотите обновить таблицу, то

update table 
set employeeid = right(1,employeeId) 
+0

Я хотел обновить таблицу. – Anjana

1

Попробуйте this-

UPDATE your_table SET EmployeeID=SUBSTR(TO_CHAR(EmployeeID),1,1); 
0
UPDATE tableName 
SET EmployeeID = LEFT (EmployeeID, CASE WHEN LEN(EmployeeID) > 1 THEN LEN(EmployeeID) - 1 ELSE 1 END) 
0

Большинство баз данных поддерживают функцию left(). Он автоматически преобразует целое число в строку, а затем результат возвращается к целому. Поэтому самое простое утверждение:

update t 
    employeeId = left(employeeId, 1); 

Примечание: В некоторых базах данных, это было бы substr(employeeId, 1, 1) или substring(employeeId, 1, 1).

Кроме того, этот оператор выполняет две неявные преобразования типов.

Вы также можете добавить where employeeId like '__%', если хотите ограничить update строками, которые на самом деле будут меняться.

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