我正在编写一个导入实用程序,它使用电话号码作为导入中的唯一键.
我需要检查我的数据库中是否存在电话号码.问题是数据库中的电话号码可能包含破折号和括号以及其他可能的内容.我写了一个函数来删除这些东西,问题是它很慢,我的数据库中有数千条记录,一次导入数千条记录,这个过程可能会慢得令人无法接受.我已经将电话号码列作为索引.
我尝试使用这篇文章中的脚本:
T-SQL trim (以及其他非字母数字字符)
但这并没有加快速度.
有没有更快的方法来删除非数字字符?当需要比较10,000到100,000条记录时,可以表现良好的东西.
无论做什么都需要快速执行.
更新
根据人们的回应,我想在运行导入实用程序之前我必须清理字段.
要回答我正在编写导入实用程序的问题,它是一个C#应用程序.我现在正在将BIGINT与BIGINT进行比较,不需要改变数据库数据,而且我仍然使用一小组数据(大约2000条记录)来获得性能.
比较BIGINT和BIGINT会减慢速度吗?
我尽可能地优化了我的应用程序的代码端(删除了正则表达式,删除了不必要的数据库调用).虽然我不能再将SQL作为问题的根源来隔离,但我仍然觉得它是.
标题是自我解释的.有没有办法直接进行这种导入?
我有一个带有"DEFAULT"约束的列.我想创建一个删除该列的脚本.
问题是它返回此错误:
Msg 5074, Level 16, State 1, Line 1
The object 'DF__PeriodSce__IsClo__4BCC3ABA' is dependent on column 'IsClosed'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE DROP COLUMN IsClosed failed because one or more objects access this column.
Run Code Online (Sandbox Code Playgroud)
我找不到一种简单的方法来删除一个列及其所有相关的约束(只发现了查看系统表的大脚本......必须(!!)这是一个"好"的方法.)
由于DEFAULT约束的名称是随机生成的,我不能按名称删除它.
更新:
约束类型为"DEFAULT".
我看到了你们提出的解决方案,但我发现它们都非常"脏"......你不觉得吗?我不知道它是用于Oracle还是MySQL,但它可以做类似的事情:
DROP COLUMN xxx CASCADE CONSTRAINTS
Run Code Online (Sandbox Code Playgroud)
它会丢弃所有相关的约束......或者至少它会自动删除映射到该列的约束(至少CHECK约束!)
在MSSQL中没有类似的东西吗?
我正在尝试对别名列执行分组操作(下面的示例),但无法确定正确的语法.
SELECT LastName + ', ' + FirstName AS 'FullName'
FROM customers
GROUP BY 'FullName'
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
进一步扩展问题(我没想到我收到的答案)解决方案是否仍然适用于CASEed别名列?
SELECT
CASE
WHEN LastName IS NULL THEN FirstName
WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
END AS 'FullName'
FROM customers
GROUP BY
LastName, FirstName
Run Code Online (Sandbox Code Playgroud)
答案是肯定的,它仍然适用.
我试图找到一种方法来提取有关SQL Server(2008)中的表的信息.
我需要的数据需要包括表的描述(从属性窗口的Description属性填充),该表的字段列表及其各自的数据类型.
有什么方法可以提取这样的元数据吗?我认为我必须使用一些syssp,但我不确定是哪一个.
我有一个SQL Server 2000,其中包含一个包含image列的表.
如何通过指定文件的路径将文件的二进制数据插入该列?
CREATE TABLE Files
(
FileId int,
FileData image
)
Run Code Online (Sandbox Code Playgroud) 在SQL Server 2005(Trusted vs Windows Auth)方面,什么是可信连接?
我有以下函数返回表.
create Function FN(@Str varchar(30))
returns
@Names table(name varchar(25))
as
begin
while (charindex(',', @str) > 0)
begin
insert into @Names values(substring(@str, 1, charindex(',', @str) - 1))
set @str = substring(@str, charindex(',', @str) + 1, 100)
end
insert into @Names values(@str)
return
end
Run Code Online (Sandbox Code Playgroud)
请问任何人请解释我如何运行此功能.
sql-server ×10
sql ×4
t-sql ×4
backup ×1
metadata ×1
migration ×1
mysql ×1
optimization ×1
performance ×1
syntax ×1