我的table1有ID列,table2有ID号列。 ID格式例如是“aac557z”。我想比较这些ID的数字。 表1:
表2:
我想从table1中选择行,列中的单词是“567”。数字可能不同。 也许有人有想法? 我正在使用MS Access 2010。 提前致谢。
答案 0 :(得分:1)
如果ID的数字部分始终位于相同的位置并且长度相同,则可以使用MID
函数来获取比较的数字部分。它在大型桌子上的速度不会很快。
以下是语法链接:http://office.microsoft.com/en-us/access-help/mid-function-HA001228881.aspx
如果您要经常进行此比较,最好在表中添加另一个字段,并在将其插入表中时使用ID的数字部分填充它。然后使用该字段进行比较,您的查询应该更快。
答案 1 :(得分:0)
您可以使用用户定义的函数从Id中提取数字部分,然后其余部分相当简单。
这是完成工作的功能:
CREATE FUNCTION ExtractInteger(@String VARCHAR(2000))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @Count INT
DECLARE @IntNumbers VARCHAR(1000)
SET @Count = 0
SET @IntNumbers = ''
WHILE @Count <= LEN(@String)
BEGIN
IF SUBSTRING(@String,@Count,1) >= '0'
AND SUBSTRING(@String,@Count,1) <= '9'
BEGIN
SET @IntNumbers = @IntNumbers + SUBSTRING(@String,@Count,1)
END
SET @Count = @Count + 1
END
RETURN @IntNumbers
END
然后比较,像这样:
SELECT * from TABLE1
JOIN TABLE2
on dbo.ExtractInteger(TABLE1.ID) = dbo.ExtractInteger(Table2.ID)
如果表格非常大,那么这将是一个昂贵的查询!