如何在LI Server中使用LIKE运算符进行匹配?

时间:2013-04-02 14:49:04

标签: sql sql-server

我正在尝试匹配价格字符串,例如$ 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而没有运气。我怎么做这个工作?感谢。

2 个答案:

答案 0 :(得分:2)

如何使用LEFT

SELECT *
FROM   TableName
WHERE  LEFT('$25.00',1) = Symbol

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