文字列中の最大の部分的インクリメンタルを計算する SQL メソッド
2022-01-20 23:13:59
文字列中の最大の増加部分列を求める
データベース環境 sql server 2005
質問として、文字列 "abcbklmnodfghijkmer" の最大の増加部分列を求めよ。この文字列は少し特殊である。
小文字のa〜zの26文字だけで構成されています。
一般的な考え方は次の通りです。
1. 文字列をカラムに転送して保存し、行番号を生成する
2. インクリメンタルカウンター列(デフォルトは1)を設定し、辞書内の順序がインクリメンタルである場合に、上下の行の文字を比較する。
辞書の順序がインクリメンタルである場合、カウンタは1だけ増加し、そうでない場合は、カウンタに1が設定される
3. 3. カウンターが最大の数字とそれに対応する行番号を見つけ、この2つの数字に従って文字列をインターセプトする。
アイデアはあるので、以下はそのコードです。
DECLARE @vtext VARCHAR(255)
SET @vtext = 'abcbklmnodfghijkmer'
/*Speak string into a column and generate row numbers*/
WITH x0
AS ( SELECT number AS id ,
SUBSTRING(@vtext, number, 1) AS letter
FROM master.dbo.spt_values
WHERE type = 'P'
AND number <= LEN(@vtext)
AND number >= 1
),/*implement counter*/
x1 ( id, letter, clen )
AS ( SELECT id ,
letter ,
1 AS clen
FROM x0
WHERE id = 1
UNION ALL
SELECT x0.id ,
x0.letter ,
CASE WHEN x1.letter <= x0.letter THEN x1.clen + 1
ELSE 1
END AS clen
FROM x0 ,
x1
WHERE x0.id = x1.id + 1
)
/*intercept string*/
SELECT SUBSTRING(@vtext, start, sublen) AS max subsequence
FROM ( SELECT id ,
clen ,
MAX(clen) OVER ( ) AS maxclen ,
id - MAX(clen) OVER ( ) + 1 AS start ,
MAX(clen) OVER ( ) AS sublen
FROM x1
) t
WHERE clen = maxclen
見つかった最大部分配列は
以上のアイデアとコードで、啓蒙と参考になれば幸いです。
関連
-
SQL2005 ビューデッドロック ストアドプロシージャ sp_who_lock
-
SQL2005インストール時のバージョン変更チェックでSKUPGRADE=1が発生する問題の解決法
-
SQL server 2005 をインストールすると、32 ビット ASP.NET は既に登録されているので、64 ビットのソリューションを登録する必要があるとの警告が表示される。
-
SQL Server 2005 復旧データベース詳細グラフィックチュートリアル
-
SQL Server 2005 で Try Catch を使って例外を処理する
-
SQL Server 2005のデータベースでtempdbの場所を変更する方法
-
PowerDesignerでSQL Serverデータベースをインポートする方法
-
SQL Server 2005でリモートデータベース接続を開く方法
-
sql server 2005 データベースのバックアップ・リストア グラフィックチュートリアル
-
SQL Server モバイルシステムデータベース
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL ServerにおけるRAISERRORの使用詳細
-
Microsoft Sql server2005 のインストール手順のグラフィック詳細とよくある問題の解決法
-
SQL Serverは、SET FMTONLY ONでテーブルのメタデータを取得する
-
Sqlserver 2005のログファイルが大きすぎる削減する方法
-
JDBCからSql Server 2005の概要
-
win2003 ServerでSQL Server 2005のリモート接続を設定する方法
-
sql2005 ローカルコンピュータの SQL SERVER サービスが起動し、その後停止する 解決方法
-
AccessからSQL Server 2005へのインポートの方法概要
-
SQL Server Connect to Server Error 233 の解決法
-
SQLServerは、ユーザーのデフォルトデータベースを開くことができません ログイン失敗エラー4064の解決策