【发布时间】:2015-09-10 02:02:17
【问题描述】:
我在 SQL Server/Oracle db 的表中有各种字符串,如下所示:
String1
String2
String3
我需要将它们转换为正整数,比如:
String1 = 12
String2 = 25
String3 = 45
我不希望这些数字按任何顺序排列。唯一的要求是为一个字符串生成的数字不应与其他字符串冲突。可以将新字符串插入表中,也可以删除旧字符串。现在稍后,如果我没有第二个字符串,而是有一个新字符串
String1 = 12
String3 = 45
String4 = 28
请注意,之前为第二个字符串生成的数字 25 不能用于新字符串。 不允许使用额外的存储空间(临时表)。我使用了 row_number 函数,但后来意识到当插入新字符串时,使用此函数生成的整数会发生变化(因为字符串的顺序会发生变化)
注意:我的字符串是 128 位 GUID。
注意:如果允许我在本地服务器(而不是客户端计算机)上使用表(唯一整数 - GUID 映射),我如何确保没有为新的 GUID 字符串分配之前分配的整数?
我们将不胜感激任何解决此问题的意见。
【问题讨论】:
-
身份列怎么样?
-
不允许对数据库进行任何更改。数据库有一列具有唯一字符串。我需要使用 SELECT 查询来检索这些字符串并为它们分配唯一的整数。在第一次运行期间分配给字符串的编号在第二次运行期间也应该相同(考虑到字符串插入和删除可以从数据库中进行)。不允许创建临时表。
-
系统要求您 (1) 存储信息,(2) 不使用存储空间。我认为这在逻辑上是不可能的。
-
我可以知道你的整数是如何分配给字符串的吗?
-
请解释为什么您需要数字。它不能是为了唯一性,因为您可以使用 GUID 来强制执行。
标签: sql sql-server oracle