我正在尝试匹配价格字符串,例如$ 25.00,以查找相应的货币符号。例如,$ 25.00应与USD匹配。这很有用;但是当我传入25.00(没有货币符号)时,我在CUP上有一个不需要的匹配。
我在SQL Server 2012中设置了以下表格:
CurrencyId varchar(3)
Symbol nvarchar
以下是一些数据:
Currency Symbol
ANG ƒ
CUP ₱
EUR €
USD $
查询是:
SELECT [t0].[CurrencyId], [t0].[Symbol]
FROM [dbo].[EWN_Currency] AS [t0]
WHERE '25.00' LIKE '%'+[t0].[Symbol]+'%'
如果我跳过字符串连接进行测试,那么它至少不会返回坏匹配,例如:
SELECT [t0].[CurrencyId], [t0].[Symbol]
FROM [dbo].[EWN_Currency] AS [t0]
WHERE '25.00' LIKE '%₱%'
似乎没有使用LIKE'%'+ [t0]正确设置字符串连接。[符号] +'%'。我已经玩过将所有内容转换为nvarchar而没有运气。我怎么做这个工作?感谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
尝试:
with cte as
(select [Symbol], [CurrencyId] from [dbo].[EWN_Currency] where [Symbol] = '₱')
SELECT coalesce([t0].[CurrencyId], cte.[CurrencyId]) [CurrencyId],
coalesce([t0].[Symbol], cte.[Symbol]) [Symbol]
FROM cte
LEFT JOIN [dbo].[EWN_Currency] AS [t0]
ON '25.00' LIKE '%'+[t0].[Symbol]+'%'
注意:如果您打算使用带有货币格式数据的表而不是单个字符串,那么我建议从cte到数据表交叉连接,然后从数据表连接到货币表。 / p>
(SQLFiddle here)