Преобразование строки в строку SQL Server - PullRequest
0 голосов
/ 25 сентября 2018

Как мы можем преобразовать следующий ввод в строку в SQL Server?

'e4lu50', 'e4lu10', 'e4lu11', 'e4de11', 'e4de12', 'e4nl51', 'e4es11'

Ожидаемый результат

e4lu50
e4lu10
e4lu11
e4de11
e4de12
e4nl51
e4es11

У меня есть функция

 CREATE FUNCTION [dbo].[BreakStringIntoRows] 
     (@CommadelimitedString VARCHAR(1000))  
 RETURNS   
     @Result TABLE (Column1 INT)  
 AS  
 BEGIN  
     DECLARE @IntLocation INT  

     WHILE (CHARINDEX(',', @CommadelimitedString, 0) > 0)  
     BEGIN  
         SET @IntLocation = CHARINDEX(',', @CommadelimitedString, 0)        

         INSERT INTO @Result (Column1)  
             --LTRIM and RTRIM to ensure blank spaces are removed
             SELECT 
                 RTRIM(LTRIM(SUBSTRING(@CommadelimitedString, 0, @IntLocation)))     

             SET @CommadelimitedString = STUFF(@CommadelimitedString, 1, @IntLocation, '')
     END  

     INSERT INTO @Result (Column1)  
         SELECT RTRIM(LTRIM(@CommadelimitedString))--LTRIM and RTRIM to ensure blank spaces are removed  

     RETURN   
 END       

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

WITH SEG(aa) AS
(
    SELECT
        BreakStringIntoRows ('e4lu50', 'e4lu10', 'e4lu11', 'e4de11',
                             'e4de12', 'e4nl51', 'e4es11', 'e4it11')
)
SELECT * 
FROM SEG

1 Ответ

0 голосов
/ 25 сентября 2018

У вас нет одной строки, у вас есть набор из 8 строк, разделенных запятыми.Если вы хотите придерживаться своей функции, то вызывайте ее следующим образом:

with SEG(aa) as 
(select BreakStringIntoRows ('e4lu50,e4lu10,e4lu11,e4de11,e4de12,e4nl51,e4es11')
SELECT * from SEG

Так как вы указываете свою строку непосредственно в своем запросе, это выполнимо?Если нет, используйте функцию REPLACE (), чтобы убрать кавычки перед тем, как сделать вызов.

...