pgsql动态创建table
先上SQL
CREATE OR REPLACE FUNCTION createtable_urllist_withdate()RETURNS varchar AS $BODY$ declare tableNameWithDate varchar;tableCreateSQL varchar;currentDate varchar;BEGINSELECT INTO currentDate to_char(current_date, 'yyyymmdd');tableNameWithDate:= 'tb_url_list_'||currentDate;if not exists(select 1 from pg_tables where tablename = tableNameWithDate)thentableCreateSQL := 'create table ' || tableNameWithDate || '(id integer primary key,URLlevel integer,URL varchar(100),title varchar(50))';RAISE NOTICE '開始創建表%',tableCreateSQL;EXECUTE(tableCreateSQL);RAISE NOTICE '成功創建表%',tableCreateSQL;end if;return tableNameWithDate;end; $BODY$LANGUAGE plpgsql VOLATILECOST 100; ALTER FUNCTION createurltablewithdate()OWNER TO postgres;1.SELECT INTO
生成多個列(但只有一行)的SELECT命令的結果可以賦予一個記錄變量, 行類型變量,或者一個標量變量的列表。這是用下面方法實現的:
SELECT INTO target select_expressions FROM ...;這里的 target 可以是一個記錄變量, 行變量,或者一個用逗號分隔的簡單變量和記錄/行字段的列表。 select_expressions 和命令的剩余部分和普通 SQL 一樣。
請注意這個構造和 PostgreSQL 普通的SELECT INTO構造的解釋是不一樣的, 后者的INTO目標是一個新創建的表。 (如果你想在 PL/pgSQL 函數里從一個SELECT 的結果中創建一個表,那么使用 CREATE TABLE ... AS SELECT 語法。)
也就是說如果是平時使用sql的時候,如果使用select into是插入一個表,但是在pgsql中使用的時候就是插入一條記錄
2.字符串操作符
字符串連接符: ||
字符串長度:bit_length(字段),char_length(字段)--中文字符算一個字長,octet(字段)--中文字符按編碼算字長,例如UTF-8則一個中文字符一般是3個字長
字符串替換:overlay(字段 placing 替換string from int [for int]) 例如:select overlay(lastname placing 'gg' from 7 for 2)意思是將lastname字段中的值從第7個字符開始,用'gg'替換兩個字符
字符串中某個字符的位置: position(substring in string) 例如:select position('g' in lastname)
字符串截取: substring(string from int [for int])例如:select substring(lastname from 2 for 2);substring(string from pattern)例如:select substring(lastname from '^..')
字符串大小寫:lower(string),upper(string)
字符串中刪除某個字符串 trim(substring from string)默認為空白符 例如:trim('123' from lastname)
通過ascii返回字符,或者通過字符返回ascii 例如:select ascii('a'); select chr('97')
3.剛開始的時候我直接創建table,發現不能給表名動態賦值。后來查了下,通過迂回能夠實現,先將"create table……"字符串賦值給一個臨時變量,這個時候表名已經生成,并且賦值給了臨時變量,然后使用EXECUTE(string)執行。
?
一個比較詳細的postgresql中文文檔資料鏈接:http://www.kuqin.com/postgreSQL8.1_doc/
轉載于:https://www.cnblogs.com/charlexu/archive/2013/03/11/2954277.html
總結
以上是生活随笔為你收集整理的pgsql动态创建table的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各类编程语言视频教程(300G)
- 下一篇: 从人人网抓取高校数据信息,包括,省份 -