问题描述:
大家好,我在查询 VIEW 时遇到了一些麻烦,其列部分是SPLIT_PART()
og 表列上的函数结果;我按如下方式创建了 VIEW:
CREATE VIEW ClientsAddressList(Client_ID, FirstName, LastName, ResidenceAddress, City, PostalCode, Province) AS
SELECT Client_ID,
FirstName,
LastName,
SPLIT_PART(Address, '-', 1) AS ResidenceAddress,
SPLIT_PART(Address, '-', 2) AS City,
SPLIT_PART(Address, '-', 3) AS PostalCode,
SPLIT_PART(Address, '-', 4) AS Province
FROM Clients;
我的意图是将包含与客户住所相关的所有信息的结构化属性(Clients.Address
定义为字符串)分成几列以单独查询(例如或)。VARCHAR(255)
SELECT FirstName, LastName FROM ClientAddressList WHERE City LIKE 'N%';
SELECT Client_ID FROM ClientAddressList WHERE PostalCode = '82305';
我的经历:
Clients 表包含一个测试行:
Client_ID | 名 | 姓 | 居住地址 | 城市 | 邮政编码 | 省 |
---|---|---|---|---|---|---|
00451 | 埃齐奥 | 奥迪托雷 | Via dei Banchi 45 - 佛罗伦萨 - 50123 - 佛罗伦萨 | 佛罗伦萨 | 50123 | 佛罗伦萨 |
所以我VIEW
有这一行:
Client_ID | 名 | 姓 | 居住地址 | 城市 | 邮政编码 | 省 |
---|---|---|---|---|---|---|
00451 | 埃齐奥 | 奥迪托雷 | Via dei Banchi 45 | 佛罗伦萨 | 50123 | 佛罗伦萨 |
我试过了:
SELECT Client_ID, FirstName, LastName
FROM ClientsAddressList
WHERE City = 'Florence'
它不返回任何结果:
Client_ID | 名 | 姓 | 居住地址 | 城市 | 邮政编码 | 省 |
---|
但是,如果我查询不是SPLIT_PART()
它的结果的列:
SELECT Client_ID, FirstName, LastName, City
FROM ClientsAddressList
WHERE Client_ID = '00451'
Client_ID | 名 | 姓 | 城市 |
---|---|---|---|
00451 | 埃齐奥 | 奥迪托雷 | 佛罗伦萨 |
我的期望:
即使在结果列上,我也会WHERE
从句工作并返回值:SPLIT_PART()
SELECT Client_ID
FROM ClientAddressList
WHERE PostalCode LIKE = '%123'
Client_ID |
---|
00451 |
有人可以解释一下可能是什么问题吗?太感谢了!