Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL查询在字符“quot”后生成第二行|&引用;?_Sql_Oracle - Fatal编程技术网

如何使用SQL查询在字符“quot”后生成第二行|&引用;?

如何使用SQL查询在字符“quot”后生成第二行|&引用;?,sql,oracle,Sql,Oracle,我可以知道如何使用SQL select查询在字符(“|”)后换行吗 您可以按如下方式使用替换: replace(your_str,'|',chr(10)) 如果您是指SQL中的新行,您可以试试 DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10) PRINT ('SELECT FirstLine AS MyFirstLine ' + @NewLineChar + 'SELECT SecondLine AS MySecondLine')

我可以知道如何使用SQL select查询在字符(“|”)后换行吗


您可以按如下方式使用
替换

replace(your_str,'|',chr(10))

如果您是指SQL中的新行,您可以试试

DECLARE @NewLineChar AS CHAR(2) = CHAR(13) + CHAR(10)

PRINT ('SELECT FirstLine AS MyFirstLine ' + @NewLineChar + 'SELECT SecondLine AS MySecondLine')

也可以使用此表值函数。您可以将整个文本设置为函数以及分隔符(在本例中为“|”),最后它将根据存在的“|”数量返回多个记录

ALTER FUNCTION [dbo].[Split] ( @string NVARCHAR(MAX), @delimiter CHAR(1)) RETURNS @output TABLE(splitdata NVARCHAR(MAX)) 

BEGIN 
    DECLARE @start INT, @end INT 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1 BEGIN 
        IF @end = 0  
            SET @end = LEN(@string) + 1
       
        INSERT INTO @output (splitdata)  
        VALUES(SUBSTRING(@string, @start, @end - @start)) 
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)
        
    END 
    RETURN 
END
ALTER函数[dbo].[Split](@string NVARCHAR(MAX),@delimiter CHAR(1))返回@output TABLE(splitdata NVARCHAR(MAX))
开始
声明@start INT、@end INT
选择@start=1、@end=CHARINDEX(@delimiter、@string)
而@start
如果你的问题无法解决,请随时再问


RaminHbb

嗨,我尝试了使用替换,但没有成功,因为“|”之后是下一条记录,我认为使用联接可以解决这个问题,但我不知道如何使用联接查询?对不起,让您感到困惑,新行是下一条记录。这对Oracle无效。我猜可以使用递归cte(WITH)。我想您想要这样的东西: