SQL就像高级cmd

时间:2015-10-27 03:55:17

标签: ms-access

我正在使用Microsoft Access 2013

我需要进行查询,以便程序可以获取ACTOR'S NAME的姓氏,当ACTOR的名字有他们的全名,例如Kelly Garman和Weird Al Yankovic。扬科维奇有3个值,加曼有2个值。有什么帮助吗?

有超过10,000条记录,其中包含大量不同的名称,因此我需要使用它,以便要求用户输入姓氏,一旦他们这样做,数据库将按姓氏进行查询。

它也是一个查询,用户在询问时输入内容。

数据库中的列位于SELECT语句

SELECT [RECORD #], [ACTOR'S NAME], [PRODUCTION NAME]
FROM Actors AS A
WHERE [A.ACTOR'S NAME] = [What's the last name?]

数据库文件在这里。 https://drive.google.com/open?id=0B19CRcQGkXoVTTZpaldDWnFuS28

3 个答案:

答案 0 :(得分:2)

您可以使用REVERSESUBSTRING一起获取姓氏。

REVERSE( SUBSTRING( REVERSE([ACTOR'S NAME]), 1, INSTR(' ', REVERSE([ACTOR'S NAME])) - 1))

答案 1 :(得分:2)

要找到在最后一个空格后获取单词所需的姓氏。您无法在MS Access中直接执行此操作。相反,您可以使用InstrRev(Name, ' ')找到最后一个空格的位置。然后使用Right来获取其右侧的所有内容,但这需要从字符串的 end 开始。为此,请从名称的长度中减去InstrRev中的内容。

SELECT Right(Name, Len(Name) - InstrRev(Name, ' ')) as 'Last Name'
FROM Actors
WHERE Right(Name, Len(Name) - InstrRev(Name, ' ')) = 'Yankovic';

不幸的是,我没有MS Access的副本来测试它。

答案 2 :(得分:0)

您可以在WHERE子句中使用模式匹配。

PARAMETERS [What's the last name?] Text ( 255 );
SELECT A.[Record #], A.[ACTOR'S NAME]
FROM Actors AS A
WHERE A.[ACTOR'S NAME] ALike '% ' & [What's the last name?];