Как удалить символы из таблицы префиксов и убедиться, что только с начала строки удалены

Мне нужно иметь возможность убрать следующие префиксы из кодов продуктов, как вы видите, я включил простой запрос, в то время как да, ниже показано, что cm я не хочу использовать замену, так как он заменяет любой экземпляр cm, в котором содержатся префиксы Перечень таблицы Supplire ссылается на таблицу продуктов

Префиксы не всегда двух символов, например, могут быть TOW

SELECT *  , left(prod.productcode, LEN(sup.prefix)) AS MyTrimmedColumn
FROM MSLStore1_Products prod  ,supplier sup
WHERE prod.suppid = 9039 AND prod.SgpID = 171
and sup.supno = prod.suppid

Коды продуктов:

ProductCode
CMDI25L
CMDI300M
CMDI750M
CMXFFP5L

Префиксы:

Prefix
CM
CM
CM
CM

3 ответа

Как я думал использовать этот запрос и импортировать результаты из этого в поле внешнего кода таблицы продуктов

 SELECT *  , right(prod.productcode, len(prod.productcode) - LEN(sup.prefix) ) AS ExternalCoode
 FROM MSLStore1_Products prod  ,supplier sup
 WHERE prod.suppid = 9217 AND prod.SgpID = 123 and sup.supno = prod.suppid

Вы могли бы использовать SUBSTRING() для этого:

SUBSTRING(prod.productcode, LEN(sup.prefix))

(конкретный синтаксис может отличаться для разных менеджеров баз данных)

Возможно, вы захотите поместить свои префиксы в другую таблицу и запустить поле productCode через фильтрующую пользовательскую функцию для получения окончательного кода.

Что-то вроде

SELECT *, dbo.FilterPCode(prod.productcode) AS MyTrimmedColumn FROM MSLStore1_Products prod, поставщик sup ГДЕ prod.suppid = 9039 И prod.SgpID = 171 и sup.supno = prod.suppid

затем просто определите UDF, который берет строковый код продукта и удаляет любой префикс спереди.

Вы можете увидеть снижение производительности при использовании подобной UDF для действительно больших запросов, и в этом случае может быть лучше сгенерировать таблицу таблиц кодов продуктов без префикса, связанного с кодами продуктов с префиксом. Не знаю достаточно о схеме данных, чтобы знать, действительно ли это возможно без получения перекрестных ссылок.

Другие вопросы по тегам