nar86 Ответов: 2

Отображение первых 10 символов в SQL server


Мой запрос выглядит следующим образом


выберите currentyearcooperative,случае функция charindex('-', currentyearcooperative) при ТО 0 currentyearcooperative иначе подстрока(currentyearcooperative, 1, функция charindex('-', currentyearcooperative) - 1) конец FarmerCoNo,
случае функция charindex('-', currentyearcooperative), когда 0, то currentyearcooperative иначе подстрока(currentyearcooperative, функция charindex('-', currentyearcooperative) + 1, лен(currentyearcooperative)) конец FarmerCoName
из tbl_farmerregistration_ivorycoast, где farmersapcode = '1147215'


Когда я запускаю вышеописанное я получаю вывод следующим образом

currentyearcooperative FarmerCoNO FarmerCoName

ФАНЬУДАЛА(ДИАВАЛА) ФАНЬУДАЛА (ДИАВАЛА) ФАНЬУДАЛА (ДИАВАЛА)


Из вышесказанного я хочу получить следующий результат

currentyearcooperative FarmerCoNO FarmerCoName

ФАНЬУДАЛА(ДИАВАЛА) ФАНЬУДАЛА ФАНЬУДАЛА


я хочу отобразить первые 10 символов FarmerCoNo и FarmerCoName.

из приведенного выше sql - запроса следует, какие изменения я должен внести, чтобы получить свой вышеприведенный вывод.

Что я уже пробовал:

Мой запрос выглядит следующим образом


выберите currentyearcooperative,случае функция charindex('-', currentyearcooperative) при ТО 0 currentyearcooperative иначе подстрока(currentyearcooperative, 1, функция charindex('-', currentyearcooperative) - 1) конец FarmerCoNo,
случае функция charindex('-', currentyearcooperative), когда 0, то currentyearcooperative иначе подстрока(currentyearcooperative, функция charindex('-', currentyearcooperative) + 1, лен(currentyearcooperative)) конец FarmerCoName
из tbl_farmerregistration_ivorycoast, где farmersapcode = '1147215'


Когда я запускаю вышеописанное я получаю вывод следующим образом

currentyearcooperative FarmerCoNO FarmerCoName

ФАНЬУДАЛА(ДИАВАЛА) ФАНЬУДАЛА (ДИАВАЛА) ФАНЬУДАЛА (ДИАВАЛА)


Из вышесказанного я хочу получить следующий результат

currentyearcooperative FarmerCoNO FarmerCoName

ФАНЬУДАЛА(ДИАВАЛА) ФАНЬУДАЛА ФАНЬУДАЛА


я хочу отобразить первые 10 символов FarmerCoNo и FarmerCoName.


из приведенного выше sql - запроса следует, какие изменения я должен внести, чтобы получить свой вышеприведенный вывод.

2 Ответов

Рейтинг:
1

Kornfeld Eliyahu Peter

Строковые функции (Transact-SQL) | Microsoft Docs[^]

ЛЕВЫЙ может быть, тот самый, что для тебя...


Рейтинг:
1

OriginalGriff

Вам понадобится функция substring : Функция SQL Server SUBSTRING() [^] - если это всегда только 10 символов, то это тривиально. Если это "до первого пробела", то вам также нужна функция CHARINDEX: Функция SQL Server CHARINDEX() [^]

В вашем случае вам нужно более внимательно посмотреть на свои данные - они обрезаются до" -", Поэтому, если они не существуют в каждой строке и в нужном месте, вы не получите то, что хотите. Поскольку ваши выходные данные кажутся более длинными, чем вы просите, возможно, вам нужно пересмотреть свои входные данные, чтобы решить, что делать - мы не можем этого сделать, поскольку у нас нет доступа к вашим данным.

Я бы предложил создать пользовательскую функцию TRIMTO и вызвать ее вместо того, чтобы вставлять код: это намного облегчает чтение остальной части вашего запроса и должно быть более эффективным, чем многократное использование CHARINDEX. Кроме того, его легче отлаживать и исправлять.