把sql拆解
⑴ 如果要把数据库文件从sql软件里分离 出来应该是用什么指令
打开SQL Server,点击连接,进入SQL Server软件中,在 需要分离的数据库名称 上右键-任务-分离。
⑵ 在SQL中如何把一列字符串拆分为多列,请高手
--首先,你是按什么规则拆? 我举个例子 你要按字段中的逗号拆开,假设字段名叫text--用charindex和substring这2个函数 select substring(text,1,charindex(',',text)-1) as [before], substring(text,charindex(',',text),len(text)) as [after] from table
⑶ 怎样把SQL语句查询完了的语句分解 例如这里 我得到的语句是2013-01,我想要取2013,SQL语句该怎么写
SUBSTRING(expression,start,length)
selectSUBSTRING('2013-01',1,4)
参考:http://msdn.microsoft.com/zh-cn/library/ms187748.aspx
⑷ SQL语句拆分表中内容,并变成两列
if exists (select 1 from sysobjects where name = 'uf_get_value' and xtype = 'FN')
drop function uf_get_value
go
create function uf_get_value(@value VARCHAR(100))
--获取列默认值
returns VARCHAR(100) as
begin
declare @rtn VARCHAR(100), @tmp VARCHAR(100), @status CHAR(1)
SET @rtn = ''
SET @tmp = ''
WHILE len(@value) > 0
BEGIN
IF ascii(substring(@value, 1, 1)) = ascii(',')
BEGIN
SET @value = RIGHT(@value, len(@value) - 1)
CONTINUE
END
IF ascii(substring(@value, 1, 1)) BETWEEN ascii('0') AND ascii('9')
BEGIN
SET @tmp = @tmp + substring(@value, 1, 1)
SET @status = 'N'
END
ELSE
BEGIN
SET @rtn = @rtn + substring(@value, 1, 1)
SET @status = 'S'
END
SET @value = RIGHT(@value, len(@value) - 1)
IF @value <> ''
BEGIN
IF @status = 'S' AND ascii(substring(@value, 1, 1)) BETWEEN ascii('0') AND ascii('9') SET @rtn = @rtn + ','
IF @status = 'N' AND NOT ascii(substring(@value, 1, 1)) BETWEEN ascii('0') AND ascii('9') SET @tmp = @tmp + ','
END
END
IF RIGHT(@rtn, 1) = ',' SET @rtn = LEFT(@rtn, len(@rtn) - 1)
SET @rtn = @rtn + '|' + @tmp
RETURN @rtn
END
go
--测试
--SELECT dbo.uf_get_value('A123,B23,BD21')
⑸ PL/SQL 拆解字符串语句
我提供一个拆分字符串的通用函数给你,你再写这种SQL:
1、先建立一个包,定义数组类型:
CREATE OR REPLACE PACKAGE pkg_string is
-- Purpose : 字符串处理
-- Public type declarations
TYPE StringArray IS VARRAY(2000) OF VARCHAR2(2000);
END pkg_string;
2、拆分字符串的通用函数:
CREATE OR REPLACE FUNCTION fun_ParseToArray(
a_SourceString IN VARCHAR2, --源字符串
a_Delimiter IN VARCHAR2 --拆分的分隔符
) RETURN pkg_string.StringArray IS
-- ********************************************************
-- 根据分隔符拆分字符串为数组
-- ********************************************************
v_Result pkg_string.StringArray; --数组
iCount INTEGER;
iBegin INTEGER;
sValue VARCHAR2(2000);
sSplitString VARCHAR2(2000);
BEGIN
--检查参数
IF a_SourceString IS NULL OR a_Delimiter IS NULL THEN
RETURN(v_Result);
END IF;
IF a_SourceString = '' THEN
RETURN(v_Result);
END IF;
--初始化数组
v_Result := pkg_string.StringArray();
--Only one entry was found
IF instr(a_SourceString,a_Delimiter) = 0 THEN
-- 数组加1维
v_Result.extend();
-- 将数据存入数组
v_Result(1) := a_SourceString;
RETURN(v_Result);
END IF;
iCount := 0;
sSplitString := a_SourceString;
LOOP
iBegin := INSTR(sSplitString,a_Delimiter);
EXIT WHEN iBegin < 1;
sValue := Substr(sSplitString,1,iBegin - 1);
sSplitString := SubStr(sSplitString,iBegin + 1);
-- 计数器加1
iCount := iCount + 1;
-- 数组加1维
v_Result.extend();
-- 将数据存入数组
v_Result(iCount) := sValue;
END LOOP;
--Set last entry
sSplitString := SubStr(sSplitString, iBegin);
--Update array and counter if necessary
IF Length(sSplitString) > 0 THEN
-- 计数器加1
iCount := iCount + 1;
-- 数组加1维
v_Result.extend();
-- 将数据存入数组
v_Result(iCount) := sSplitString;
END IF;
RETURN(v_Result);
EXCEPTION
WHEN others THEN
return v_Result ;
END fun_ParseToArray;
3、组成SQL
...
vs_row pkg_string.StringArray;
vs_column pkg_string.StringArray;
...
vs_row := fun_ParseToArray(你的一列数据,'#');
--再用for循环拆分vs_row的列:
vs_column(j) := fun_ParseToArray(vs_row(i),'|');
再把拆分出来的数据入表
⑹ sql语句太长,能否拆开执行
简单的回答,到目前为止,没有能支持SQL语句拼接的数据库管理软件,也应该没这个必要。
下面是一些常识,有耐心可以看一下。
1、原则上,MS SQL SERVER对SQL条件语句的长度不作限制,起码当前没有人有实际的单条语句没法执行完成的报道,应该几千个字符以内的单条SQL语句都能正常的在MS SQL附带的“SQL Server Management Studio”或“企业管理器”中执行,要不,你试试,也许你就是第一个发现问题的人。
2、如果是编程,使用某些编程软件向SQL Server发送SQL语句的话,受限于编程环境下,字符串的长度或别的因素,可能会有某些不同,如果是那样的话,最常见的做法是将多条SQL语句做成存储过程,放在SQL Server数据库中,程序只需要发送初始条件进行存储过程的调用即可。
3、也就是说,复杂的SQL语句,绝大多数专业工程人员一般都不会用通过客户端直接发向SQL 服务器的方式去执行。如果只是临时的要进行一些SQL数据库的操作,也可以直接在SQL相应的管理工具中做。
⑺ 怎么把这样长的sql语句拆分为单条sql语句,这种语句是通过工具生成的还是手动拼出来的
SELECTu.userid,u.name,u.phone
fromhx_useru
LEFTJOIN(SELECT*
fromhx_userrest
WHEREuserrestdate='".$orderhead['serverdate']."')r
onu.userid!=r.userid
INNERJOIN(SELECTuserid
from(SELECTuserid,GROUP_CONCAT(infovaluename)user_info
fromhx_userattrGROUPBYuserid)a
INNERJOIN(SELECTGROUP_CONCAT('%',infovaluename,'%')order_info
fromhx_orderneedinfo
whereorderheadid=$orderheadidandinfokeyperson=2)b
ona.user_infoLIKEIFNULL(b.order_info,'%'))d
onu.userid=d.userid
INNERJOIN(SELECT*
fromhx_userproctclass
WHEREproctclassid=".$orderhead['proctclassid'].")f
onf.userid=u.userid
LEFTJOINhx_sendareasa
onu.userid=sa.userid
WHEREu.useridNOTin(SELECTou.userid
fromhx_servertimes1
INNERJOIN(SELECT*
fromhx_servertime
whereservertimevalue='".$orderhead['servertime']."')s2
ON(s1.ordernum=s2.ordernum-1)or(s1.ordernum=s2.ordernum+1)
INNERJOIN(SELECT*
fromhx_orderhead
whereserverdate='".$orderhead['serverdate']."')h
onh.servertime=s1.servertimevalue
INNERJOINhx_order_userou
onou.orderheadid=h.orderheadid)
ANDusertype=1
ORDERBYabs(fun_getdistance(".$orderhead['latitude'].",".$orderhead['longitude'].",sa.latitude,sa.longitude))ASC,levelDESClimit$limitStart,$pagesize
稍微整理了一下,拆分是不好拆分的,这段语句都是用的子查询和连接查询,操作的表比较多,至于你说的手动拼还是用工具这个就不清楚了
⑻ 如何将sql数据库文件分割
利用软件:“SQLDumpSplitter.exe”
将导出的数据备份文件切割,可以自定义每个文件的大小,这个软件有一个好处是不会把每条记录分开,保证了每条记录的完整性,但是如果一个表中插入的数据较多,那么会把插入操作分成好几个,放在不同的小文件当中。
所以如果导入过程当中遇到 data node 参数需要改动的问题时,首先得删除表记录,再重新导,不免会出现重复记录的情况。
SQLDumpSplitter在切割数据文件的同时会把数据库表结构也独立保存起来,方便进行数据库初始化操作。
⑼ SQL如何把多条数据拆分
drop table test
create table test
(
VID int primary key,
VNum int,
vname varchar(10),
score int
)
insert into test values(1,001,'大海',20)
insert into test values(2,001,'大海',30)
insert into test values(3,001,'大海',40)
drop function fn_test
alter function fn_test
(
@vnum int
)
returns varchar(20)
as
begin
declare @str varchar(20)
select @str = isnull(@str+',','') + cast(score as varchar(2)) from test
return @str
end
go
select top 1 vid,vnum,vname,dbo.fn_test(vnum) as '分数' from test
/**
vid vnum vname 分数
----------- ----------- ---------- --------------------
1 1 大海 20,30,40
(所影响的行数为 1 行)
**/
可以了 呵呵呵呵呵
***********************************************************************************************这个是在SQL SERVER里执行的啊****************
⑽ 请问怎么把sql里的表格的内容拆成2个
见图