Как я могу использовать оператор LIKE для выполнения этого соответствия в SQL Server?

Я пытаюсь сопоставить строку цены, например, $ 25.00, чтобы найти соответствующий символ валюты. Например, 25,00 долларов США должны соответствовать доллару США. Это много работает; однако, когда я перехожу в 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 без везения. Как я могу сделать эту работу? Благодарю.

Как насчет использования LEFT ?

 SELECT * FROM TableName WHERE LEFT('$25.00',1) = Symbol 
  • Демоверсия SQLFIddle

Пытаться:

 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 к вашей таблице данных, а затем перейти из таблицы данных в таблицу валют.

( Здесь SQLFiddle)

Interesting Posts

exec не удалось, поскольку имя не является допустимым идентификатором?

Разбор XML: строка 1, символ 63, ожидался строковый литерал

зачем нужны пользователи базы данных с поддержкой Persist Security Info = True

Проблема с верхними 10 строками в sql-запросе?

Преобразование строк в столбцы в SQL

Сохраненная процедура If / Then Statement

Sql – Как искать различные строки, которые имеют две конкретные переменные

Возможно ли создать тупик с доступом только для чтения?

Cloud SQL или экземпляр VM для размещения базы данных MySQL

Escape специальные символы в SQL INSERT INTO через C #

Запрос сервера Sql с индексом для диапазона

Как я могу визуализировать значение nvarchar (max) с max> 65535, из базы данных SQL Server?

Преобразование в XML, имеющее специальное имя символа в SQL-сервере

Как отредактировать таблицу, чтобы включить CASCADE DELETE?

Поставщик членства ASP.NET не может подключиться к базе данных

Давайте будем гением компьютера.