SQL:如何比较两个单词?

时间:2011-04-28 08:51:43

标签: sql ms-access compare

我的table1有ID列,table2有ID号列。 ID格式例如是“aac557z”。我想比较这些ID的数字。 表1:

enter image description here

表2:

enter image description here

我想从table1中选择行,列中的单词是“567”。数字可能不同。 也许有人有想法? 我正在使用MS Access 2010。 提前致谢。

2 个答案:

答案 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)

如果表格非常大,那么这将是一个昂贵的查询!