문제

SQL Server 2008 Express >> Visual Web Developer >> C#

나는 다음과 같은 테이블에서 레코드를 꺼내고 있습니다.

SELECT Name, Category, Review FROM ReviewTable

이것은 잘 작동하지만 SQL Server의 검토 필드 유형은 텍스트이며 매우 (잡지 기사를 생각하십시오).

각 행의 리뷰 필드에서 처음 네 줄을 가져 와서 리피터 컨트롤에 표시하고 싶습니다. 이 줄은 기사의 티저와 같습니다.

이게 가능해? 어떻게 달성 할 수 있습니까?

도움이 되었습니까?

해결책

리뷰 에서이 첫 1000자를 반환합니다.

SELECT Name, Category, CAST(Review AS VARCHAR(1000) FROM ReviewTable

처음 4 줄이 있어야하는 경우 분할 기능을 사용해야합니다. 이것은 작동 할 수 있습니다 :

CREATE FUNCTION [dbo].[Split]
(
    @SearchString VARCHAR(8000),
    @Separator VARCHAR(5),
    @MaxItems INT
)
RETURNS @strtable TABLE (strval VARCHAR(8000))
AS

BEGIN
DECLARE @tmpStr VARCHAR(8000), @intSeparatorLength INT, @counter int

IF @MaxItems IS NULL
    SET @MaxItems = 2147483647 -- max int

SET @intSeparatorLength = LEN(@Separator)
SET @Counter = 0

SET @tmpStr = @SearchString
    WHILE 1=1 BEGIN
        INSERT INTO @strtable VALUES ( SUBSTRING(@tmpStr, 0 ,CHARINDEX(@Separator, @tmpStr)))
        SET @tmpStr = SUBSTRING(@tmpStr,CHARINDEX(@Separator,@tmpStr)+LEN(@Separator),8000)
        SET @counter = @counter + 1     
        IF (CHARINDEX(@Separator,@tmpStr) < 1 OR @counter >= @MaxItems)
            BREAK
    END

RETURN
END

용법: select * from dbo.split('aaa**bbbb**CCCC**dddd**eeee**dffff**ggggg', '**', 4)

다른 팁

글쎄, 라인의 첫 번째는 조금 더 어려울 수 있지만, 처음 250 자 정도를 꺼내지 않는 이유는 무엇입니까?

SELECT Name, Category, SubString(Review, 1, 250) AS Review FROM ReviewTable

데이터베이스 서버가 웹 서버와 동일한 로컬 네트워크에있는 경우 전체 필드를 선택할 것입니다. 액세스하려면 여전히 조회해야합니다 어느 해당 필드의 데이터이므로 데이터를 찾기위한 SQL 성능 면적은 문제가되지 않습니다. 전체 필드를 검색하는 유일한 단점은 서버간에 전달되는 데이터의 양입니다. 따라서 : 그들이 같은 네트워크에 있다면, 나는 이것이 선택하는 동안 각 레코드를 조작하는 것보다 확실히 저렴할 것이라고 말할 것입니다. 또한 사용자가 텍스트의 정식 버전을보고 싶을 때 데이터베이스를 다시 누를 필요가 없도록 응답을 캐시 할 수 있습니다.

그러나, 당신의 질문에 대답하기 위해, 아래는 아마 그것을 할 것입니다.

SELECT Name, Category, left(convert(varchar(8000), Review), charindex('\n', convert(varchar(8000), Review), charindex('\n', convert(varchar(8000), Review), charindex('\n', convert(varchar(8000), Review), charindex('\n', convert(varchar(8000), Review))+1)+1)+1)-1) FROM ReviewTable

... hrrm, 그래, 정말, 나는 나의 첫 번째 단락을 고려할 것이다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top