我同意唐·乔治的观点。这里的设计对于你想要做的事情是有缺陷的。如果可以,请返回并将 FIRST 分解为它自己的数据字段,然后将 LAST 分解为它自己的字段。每个新条目都应该有一个唯一的自动递增 ID,这应该是该记录的关键。如果你想知道有多少个“John Smiths”,那么你可以简单地做一个COUNT()
如果你不能这样做,那么一个性能很差的尝试是创建一个带有递增计数器的 SQL 循环:
DECLARE @counter int
SET @counter = 1
DECLARE @name nchar(100)
SET @name = 'john_smith' + CAST(@counter AS nchar(4))
WHILE (Exists(Select * From MainTable WHERE ID = @name ))
BEGIN
SET @counter = @counter + 1
SET @name = 'john_smith' + CAST(@counter AS nchar(4))
END
-- Now you have your @name to use...
从设计的角度来看,如果这是您唯一的选择,我会创建一个名为GetUniqueID(FIRST, LAST)
返回唯一 ID 的函数。它将执行上面的这个功能。
然后,您可以稍后存入任何性能更好的 SQL 代码。