0
  eid   |        ename          |    fname       midname  |   lname
--------+-----------------------+-------------+-----------+---------- 
   1            hansen
   2          hansen ola
   3       dennis richard hog

これらを次のように更新する方法は次のとおりです。

  eid   |        ename          |    fname       midname  |   lname
--------+-----------------------+-------------+-----------+---------- 
   1             hansen
   2           hansen ola            hansen        ola
   3       dennis richsard hog       dennis      richard       hog
4

3 に答える 3

0

名前が常に同じ順序である場合は、配列内の文字列の単語をstr_word_count:で簡単に取得できますstr_word_count ($ result, 1)

それはあなたを助けますか、それとも私に成長してもらいたいですか?

于 2012-07-04T12:50:53.957 に答える
0

更新ステートメントについては、以下の SQL コードを確認してください。

CREATE TABLE emptble(eid int,ename varchar(200) NULL,fname varchar(50) NULL,midname varchar(25) NULL,lname varchar(100) NULL)

INSERT INTO emptble(eid,ename)
VALUES(1,'hansen'),(2,'hansen ola'),(3,'dennis richard hog')

SELECT ename,
       CASE WHEN CHARINDEX(' ',ename,1)>0 then LEFT(ename,CHARINDEX(' ',ename,1)-1) ELSE ename END,
       CASE WHEN CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1)>0 THEN LEFT((CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1)-1) ELSE (CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END) END,
       CASE WHEN CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1) = 0 THEN NULL ELSE RIGHT(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END,LEN(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END)-CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1)) END


FROM emptble

UPDATE emptble SET fname= CASE WHEN CHARINDEX(' ',ename,1)>0 then LEFT(ename,CHARINDEX(' ',ename,1)-1) ELSE ename END,
                   midname =CASE WHEN CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1)>0 THEN LEFT((CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1)-1) ELSE (CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END) END,
                   lname=CASE WHEN CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1) = 0 THEN NULL ELSE RIGHT(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END,LEN(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END)-CHARINDEX(' ',(CASE WHEN CHARINDEX(' ',ename,1) = 0 then NULL ELSE RIGHT(ename,len(ename)-CHARINDEX(' ',ename,1)) END),1)) END



SELECT * FROM emptble
于 2012-07-06T06:49:20.037 に答える
0

enameテーブルから を取得し、 explode(' ', $name)orを使用して名、ミドルネーム、姓に分割し、str_word_count ($name, 1)それに応じてテーブルを更新します。

行を選択するための SQL:

SELECT * FROM <tablename>

行を更新するための SQL:

UPDATE <tablename> SET <columnname> = <value> WHERE ename = <ename>
于 2012-07-04T12:49:59.587 に答える