我有2个已加入的表,其中一个包含“材料”,另一个包含“模具”。它们由材料ID组成。
我希望最终结果是所使用的所有唯一材料的表。
我遇到的问题是材料名称中有长度。 (例如10'枫木,8'枫木),我想在获得独特材料时将它们排除在外。
我现在得到的是:
10' Maple
8' Maple
3' Maple
7' Cherry
我想要什么:
Maple
Cherry
我现在要尝试的是在选择表时摆脱数字。尽管我有限的SQL知识使工作变得困难。
SELECT LTrim(Right([CxMaterial].[Name],Len([CxMaterial].[Name])-5)) AS [EditedMaterial]
FROM [Molding] INNER JOIN
[CxMaterial]
ON [Molding].[Material ID] = [CxMaterial].[ID]
GROUP BY [EditedMaterial]
RIGHT和LEN摆脱数字 修剪是为了修剪空格(有些数字有2位,有些数字有1位)
主要错误是“您试图执行不包含指定表达式'LTRIM(...- 5))作为聚合函数一部分的查询”
以及尝试修复该问题时出现的一系列语法错误
感谢任何帮助 谢谢
答案 0 :(得分:0)
我假设您正在使用SQL Server。
如果只想在第一个空格之后输入所有内容,则可以使用stuff()
和charindex()
:
select stuff(str, 1, charindex(' ', str), '')
from (values ('7'' Cherry')) v(str)
答案 1 :(得分:0)
我将使用SUBSTRING()
和CHARINDEX()
SELECT SUBSTRING([CxMaterial].[Name], CHARINDEX(' ',[CxMaterial].[Name]),[CxMaterial].[Name])) AS [EditedMaterial]
FROM [Molding] INNER JOIN
[CxMaterial]
ON [Molding].[Material ID] = [CxMaterial].[ID]
GROUP BY [EditedMaterial]
答案 2 :(得分:0)
最后知道了
SELECT (LTrim(Right([CxMaterial].[Name],Len([CxMaterial].[Name])-5)))
FROM ([Molding] INNER JOIN [CxMaterial] ON [Molding].[Material ID] = [CxMaterial].[ID])
GROUP BY (LTrim(Right([CxMaterial].[Name],Len([CxMaterial].[Name])-5)))
它起作用了,尽管我觉得很奇怪