値が奇妙な形式で保存されている読み取り専用データベースからいくつかの統計を行う必要があります
例:次のような2行があります
ID text field
1 1001,1003,1004
2 1003, 1005
これが「5」であることを数えられるようにする必要があります。
私は書き込みアクセス権を持っていないので、関数などを作成せずにすぐに読み取ってカウントする方法がわかりません。
ここでの賢い解決策:コンマ区切りリストのアイテムをカウントする方法 MySQL
LENGTH(textfield) - LENGTH(REPLACE(textfield, ',', '')) + 1
編集
はい、追加の列として選択できます。@HamletHakobyan の回答から CHAR_LENGTH で修正します。
SELECT
ID,
textfield,
(CHAR_LENGTH(textfield) - CHAR_LENGTH(REPLACE(textfield, ',', '')) + 1) as total
FROM table
SELECT SUM(LENGTH(textfield) - LENGTH(REPLACE(textfield, ',', '')) + 1)
FROM tablename
すべての回答には、小さいながらも重要な省略があります。すべては、データベースの文字セットがutf8
約である場合、つまりシンボル,
が1バイトを取得する場合にのみ機能します。関数がの代わりにのLENGTH
数を返すという事実。正解は、文字数を返すを使用することです。bytes
chars
CHAR_LENGTH
SELECT
SUM(CHAR_LENGTH(textfield) - CHAR_LENGTH(REPLACE(textfield, ',', '')) + 1) cnt
FROM yourTable
次のようなものを使用できます。
select sum(total) TotalWords
from
(
select length(`text field`) - length(replace(`text field`, ',', '')) + 1 total
from yourtable
) x
デモで SQL Fiddle を参照してください
SELECT (LENGTH(column_name) - LENGTH(REPLACE(column_name, ',', '')) + 1) as value_count
FROM table_name
ここでLENGTH(column_name) - LENGTH(REPLACE(column_name, ',', ''))
は、各列の値に含まれるカンマの数を示します。この値を +1 すると、コンマで区切られた値の数が提供されます。