Как удалить символы из таблицы префиксов и убедиться, что только с начала строки удалены
Мне нужно иметь возможность убрать следующие префиксы из кодов продуктов, как вы видите, я включил простой запрос, в то время как да, ниже показано, что 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 для действительно больших запросов, и в этом случае может быть лучше сгенерировать таблицу таблиц кодов продуктов без префикса, связанного с кодами продуктов с префиксом. Не знаю достаточно о схеме данных, чтобы знать, действительно ли это возможно без получения перекрестных ссылок.