1.分割長字符串為多個字段
??處理數(shù)據(jù)時遇到的一個問題掌挚,本來表中的字段應(yīng)該分開的,但是由于數(shù)據(jù)原因变抽,導(dǎo)致所有字段混合到一個字段中蜻底,此時我們需要將長字符串切分成原本的不同字段才能進一步處理。
CREATE TABLE BookRating1 AS
SELECT
SUBSTR(bookrating ,1 ,LOCATE('";"',bookrating)-1) AS 'userID',
SUBSTR(bookrating ,LOCATE('";"',bookrating)+ 3 ,LOCATE('";"',bookrating,LOCATE('";"',bookrating)+1) - LOCATE('";"',bookrating) -3) AS 'bookID',
SUBSTRING(bookrating ,LOCATE('";"',bookrating,LOCATE('";"',bookrating)+1)+3) AS 'rating'
FROM BookRatings
??以上主要用到字符串處理函數(shù) SUBSTR()拔稳,SUBSTRING()葛峻,LOCATE() 三個函數(shù),用法可以自行搜索巴比。
2.添加一列自動編號以及字段替換
??從 bookID 這個字段看出其數(shù)字混雜著字母术奖,所以打算將字符串按照行號重新設(shè)置 bookID為數(shù)值型以簡化操作礁遵。
??先用 DISTINCT 方式取出所有的 bookID 建一個表名為 BOOKID的新表,
CREATE TABLE BOOKID AS
SELECT DISTINCT bookID
FROM BookRating1
??然后按以下方式重新設(shè)置 bookID(即以行號作為書籍編號):
SET @x = 0;
CREATE TABLE BookIDNew AS
SELECT @x := IFNULL(@x,0)+1 AS bookID , bookID AS book
FROM BOOKID
??添加自動編號后的表BookIDNew為:??最后用BookIDNew(原始BookRating1表中的書籍編號bookID在此表中的字段名變?yōu)閎ook)新表中的 bookID 來替換原始表BookRating1中的 bookID 即可采记。
CREATE TABLE BookRatingFinal AS
SELECT A.useID AS userID, B.bookID , A.rating
FROM BookRating1 A, BookIDNew B
WHERE A.bookID = B.book
??替換bookID后的新表BookRatingFinal如下所示:??至此佣耐,所有預(yù)處理已經(jīng)完成了,可以愉快地進行數(shù)據(jù)分析啦~