2012-03-22 1 views
0

私はこの問題をほとんどの朝に取り組んできました。私は解決策がほとんどだと思いますが、どこかに間違ったものがあるはずです。テーブル内のフィールドから開始点と終了点のCharIndexに基づいて部分文字列を返すにはどうすればよいですか?

私はカラムとして長いhtmlファイルを保持するテーブルを持っています。

mssqlでその列を検索し、そのhtmlファイルの一部を返す必要がありますが、使用するインデックス番号はありません。

これまでの私のクエリ:

SELECT SUBSTRING(ColName, CHARINDEX('TxTStart', ColName), CHARINDEX('TxTEnd', ColName)) 
FROM htmlTable ht 
WHERE ht.Date_ = '2009-01-01' 

私の考えは、このクエリの長​​さはtxtStartからTxtEndに全体の部分文字列を取得するために正しいことではないということです。

RTRIMを使用する必要がありますか?すべての文字列を取り、必要なものを切断しますか? 上記は実際に動作するはずですか?何か間違っているだけですか?

ここで完全にオフになっていますか?

ご協力いただきありがとうございます。

+0

あなたはこれがうまくいかないと思われる例を紹介できますか? – Lamak

答えて

4

第3パラメータは長さです。したがって、最後を減算して長さを取得する必要があります。これを試してください

SELECT SUBSTRING(ColName, CHARINDEX('TxTStart', ColName), CHARINDEX('TxTEnd', ColName) - CHARINDEX('TxTStart', ColName)) 
FROM htmlTable ht 
WHERE ht.Date_ = '2009-01-01' 
+0

あなたの権利私は、部分文字列の長さもまた間違っていた理由を引き出すために、3番目のパラメーターを追加しませんでした。正しい長さに達するように、彼らが個別のcharindexの検索を行うことでこれを見つけました。迅速な対応に感謝します。 – dee