質問

Sql Server 2008 Express>>ビジュアルウェブデベロッパー>> C#

このようにテーブルからレコードを引き出しています:

SELECT Name, Category, Review FROM ReviewTable

これは正常に機能しますが、SQL Serverの[レビュー]フィールドタイプはテキストであり、非常に長い長い(雑誌の記事を考えてください)。

各行の[レビュー]フィールドから最初の4行だけを引き出して、リピーターコントロールに表示します。これらの行は記事のティーザーのようになります。

これは可能ですか?どうすれば達成できますか?

役に立ちましたか?

解決

これにより、レビューからこの最初の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

データベースサーバーがWebサーバーと同じローカルネットワークにある場合、フィールド全体にアクセスするので、おそらくフィールド全体を選択すると思います。そのフィールドの任意のデータにアクセスするには、ルックアップを行う必要があります。そのため、データを見つけるためのパフォーマンス面での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