SQLフィールド分割、偶数値テーブルサブクエリを取得

表1の値を取得するためであっても、サブクエリ

選択bas.name、bas.id_card_num、bas.mobil_no、性別、bas.birthday、bas.height、bas.weight、州などprovince.value、都市としてのcity.value、エリアとしてarea.value、職業としてprofession.value xy_user_baseinf BASから
LEFT JOINは
( `` value`FROM xy_user_otherInf`ここFID = '99994'、usr_no選択し、ID = '1')州
bas.usr_no = province.usr_no ONに
参加左
(選択usr_no、 `` value`FROM xy_user_otherInf `ここで、FID = '99994'とID = '2')都市
bas.usr_no = city.usr_noに
参加左
(選択usr_no、` `value`FROM xy_user_otherInf` FID = '99994'とID = '3')領域を
bas.usr_no = area.usr_noに
参加左
`` value`FROM xy_user_otherInf`ここFID = '99992'とid = '1'、usr_no選択()職業
bas.usr_no = profession.usr_noに
bas.id_card_num =#{} id_card_num

2.クエリを分割

 

文字列の区切り文字を分割


SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX( '7654,7698,7782,7788'、 ''、help_topic_id + 1) '' - 1)NUM AS
FROM
mysql.help_topic
WHERE
help_topic_id <LENGTH( '7654,7698,7782,7788 ')-length(REPLACE(' 7654,7698,7782,7788' 、 ''、 ''))+ 1

文字列の分割:SUBSTRING_INDEX(STR、DELIM、カウント数)

パラメータ説明する
パラメータ名辞書
の分割文字列にstrの必要性
文字によってdelimを区切り、分割
数が負の場合、n番目の逆数を取って、カウント数をカウントが全て取られ、n番目の区切りの前の文字を、肯定的です区切り以下のすべての文字。
2.例
(1)カンマ区切りまで「」すべての文字を最初の2を取得します。

SUBSTRING_INDEX( '7654,7698,7782,7788'、 ''、2)

2)最後から二番目の2を取得するために「」カンマの後のすべての文字が区切り

SUBSTRING_INDEX('7654,7698,7782,7788',',',-2)

第二に、置換機能:置き換え(STR、from_str、to_str)

パラメータを示す
パラメータ名辞書の
列が交換必要STR
交換するfrom_str列ニーズを
列交換する必要to_str
2実施例
(1)セパレータ「」コンマ『が』空で置き換え。

REPLACE( '7654,7698,7782,7788'、 ''、 '')
1


文字列の長さに第三に、アクセス:LENGTH(STR)

パラメータ説明する
パラメータ名辞書
、文字列の長さを計算するstrの必要性
2例
「7654,7698,7782,7788」(1)は、文字列の長さを取得します。

LENGTH( '7654,7698,7782,7788')
1


SQLの構文解析の実装

SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX( '7654,7698,7782,7788'、 ''、help_topic_id + 1) '' - 1)NUM AS
FROM
mysql.help_topic
WHERE
help_topic_id <LENGTH( '7654,7698,7782,7788 ')-length(REPLACE(' 7654,7698,7782,7788' 、 ''、 ''))+ 1


help_topic_id増分は、もちろん、あなたはまた、自動インクリメントフィールドの他の補助テーブルを使用することができているので、ここでは変数としてhelp_topic使用のmysqlデータベースのテーブルをhelp_topic_id。

help_topic表:


実装手順:
ステップ1:Nのhelp_topic_id列を横断するアナログによって必要とされる文字列に取得された第1の分割の最後の数。

コードフラグメントによれば:

help_topic_id <LENGTH( '7654,7698,7782,7788') - LENGTH(REPLACE( '7654,7698,7782,7788'、 ''、 ''))+ 1
1
2


ステップ2:カンマが分割文字列に、ここでは(STR、DELIM、カウント数)機能をSUBSTRING_INDEXを使用してによると、「」、最後のnum個のフィールドに結果を割り当てます。

コードフラグメントによれば:

SUBSTRING_INDEX(SUBSTRING_INDEX( '7654,7698,7782,7788'、 ' ' help_topic_id + 1)'、' - 1。。)AS NUM
1
ステップ:
中""カンマ区切り値help_topic_idに従って文字列の区切り文字の前に、すべてのn + 1を傍受します。(help_topic_idが必要デリミタから入手開始する0であるので、ここで、n + 1は、先頭からカウントされます。)

SUBSTRING_INDEX( '7654,7698,7782,7788'、 ''、help_topic_id + 1。)
1。
EG:
help_topic_id = 0、取得した文字列は= 7654
help_topic_id = 1、= 7654取得した文字列、 7698
...(など)

ステップ2:
中には「」カンマ値、最後から二番目の区切りの後に撮影したすべての文字列を離しておきます。

SUBSTRING_INDEX(SUBSTRING_INDEX( '7654,7698,7782,7788'、 ' ' help_topic_id + 1)'、' - 1。)
1。
EG:
help_topic_id = 0、文字列が取得した第1ステップ、= 7654、第2のステップは、取得した文字列= 7654
の最初のステップ、help_topic_id = 1、得られた文字列= 7654,7698、第2のステップは、取得した文字列= 7698に従って
...(SO )

おすすめ

転載: www.cnblogs.com/xianz666/p/12168245.html