仅更新 SQL 中的特定记录

Updating only specific records in SQL

我有一个关于更新我正在处理的 table 中的一些记录的问题。

table 员工有一列 ID(字符串值)如下:

员工编号

45921!bba
569874
56281!rti
56287!tri
569877

etc.

所以这些记录中有一些只有数字,有一些带有感叹号和一些字母。我需要做的是只更新包含 !和字母。 所以最终结果将如下所示:

员工编号

45921
569874
56281
56287
569877

这是我目前的情况:

declare @newID nvarchar(80)
set @newID =
(
select LEFT(employee.employeeID,CHARINDEX('!',employee.employeeID)-1) as newID
from employee
where employeeID like '%!%'
)


update employee set employeeID=@newID where employeeID like '%!%';

我明白问题出在哪里,当我有不止一条可以作为 newID 的记录时,这不起作用,但欢迎任何指点。

我尝试使用替换功能,但是模式现在总是一样的,唯一不变的是!符号,所以之后的任何内容都可以丢弃。

谢谢。

您可以使用字符串函数执行此操作:

update employee
    set employeeId = left(employeeId, chardindex('?', employeeId) - 1)
    where employeeID like '%?%';