假设我有一个 Oracle 数据库。我有一个用户名 = x,密码 = y,数据库 = z。我也知道端口 = a,SID = b,主机名 = c。
那么我需要如何正确连接呢?我使用了许多选项,例如:
sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'
sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))
Run Code Online (Sandbox Code Playgroud)
提交这些命令行通常会给我返回错误消息,例如:
ORA-12560:TNS:协议适配器错误
ORA-12514:TNS:侦听器当前不知道服务
提前谢谢了!!
在我的应用程序中,我使用 C 代码在数据库中插入数据,因为我从不受信任的来源收到的字符串我已经使用PQescapeByteaConn
libpq 库对它们进行了转义。哪个工作得很好,即结果为八位字节格式字符串。看下面的例子,
输入字符串: \n\t\f\b\p\k\j\l\mestPrepared
输出字符串: \\012\\011\\014\\010pkjlmestPrepared
输出字符串被插入到数据库中。现在,我使用 JDBC 从 Java 代码中的数据库中检索该数据。如何将字符串转义回其原始值?
我想到了两种可能的方法,
我可以理解方法 1 会更有效。我已经尝试了这里列出的几乎所有功能,但没有任何效果。请帮忙!!
我在 linux 机器上使用 8.4 版的 postgres。
我有一个包含希腊格式数字的 varchar 列的 SQL 表(。作为千位分隔符,逗号作为小数点分隔符)
经典的转换
CONVERT(numeric(10,2),REPLACE([value],',','.'))
Run Code Online (Sandbox Code Playgroud)
不起作用,因为 . (千位分隔符)杀死转换
例如尝试
CONVERT(numeric(10,2),REPLACE('7.000,45',',','.'))
Run Code Online (Sandbox Code Playgroud)
我想将这些值转换为数字(10,2)
有关如何处理的任何建议?
然而,许多年过去了,自从它被报道以来,有几个主要版本进入了市场。
问题: SQL Server 2017 是否提供任何机制来轻松找出此错误的根本原因?还是像大约 9 年前报告该问题时一样难以调查?
我正在制作一个小程序,用户可以在其中发表帖子或写博客。在这些帖子上,其他用户可以像在 facebook 中一样喜欢或不喜欢帖子,也可以像在 stackoverflow 中一样对帖子投赞成票或反对票。我想知道一个常用的良好数据库结构,并且该程序可以有效地使用该结构。我有两个选择
第一的
邮政:
id head message datepost likes dislikes
1 ab anchdg DATE 1,2,3 7,55,44,3
Run Code Online (Sandbox Code Playgroud)
上面的方式,id
就是postid。在likes 列中,1,2,3
是喜欢或upvoted 帖子或博客的用户的ID。7,55,44,3
是不喜欢或贬低帖子或博客的用户的 ID。
第二
邮政:
id head message datepost
1 ab anchdg DATE
Run Code Online (Sandbox Code Playgroud)
喜欢:
id postid userid
1 1 1
2 2 2
Run Code Online (Sandbox Code Playgroud)
不喜欢:
id postid userid
1 1 7
2 1 55
Run Code Online (Sandbox Code Playgroud)
这样,我必须为喜欢和不喜欢创建两个单独的表才能获得帖子的喜欢。这样,表 ie Likes
&Dislikes
将被大量填满。这可能会使表格变重且处理速度变慢。
所以,我想知道哪种更好和标准的方法来完成这项任务?
我有一个表,其中有一NTEXT
列名为comments
. 我有第二个字符串,我们称之为anothercomment
(a varchar
),它需要放在comments
单词 之后的给定字符串中UPDATEHERE
。
强制转换会nvarchar(max)
截断comments
字符串,因此我不能使用CHARINDEX()
( Msg 8152, Level 16, State 10, Line 2
String or binary data would be truncated.)
。我曾经datalength()
检查过是否有几千列 > 8000 个字符。
我想要实现的示例(尽管字符串更长):
注释 -
This is a test UPDATEHERE This is the end of the test
另一个评论——
. This is inserted.
结果字符串 -
This is a test UPDATEHERE. This is inserted. This is the end of the test …
我想查看一个表是否包含给定字符串的任何子字符串。
假设我有一个字符串
somedomain.com
Run Code Online (Sandbox Code Playgroud)
在数据库中我有:
blabladomain.com
testdomain.com
domain.com
Run Code Online (Sandbox Code Playgroud)
我需要进行一个查询,该查询将返回“domain.com”,因为它是“somedomain.com”的子字符串。
我不知道这在 MySQL 中是否可行。
CREATE TABLE `site_core_antispam_banned_domain` (
`domain_id` int(11) NOT NULL AUTO_INCREMENT,
`domain_name` varchar(255) NOT NULL,
PRIMARY KEY (`domain_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud) 这一直困扰着我。基于 SQL 的服务器中的字符串函数似乎总是从位置 1 开始(至少 MySQL、SQL Server、Oracle 和 Postgres 是这种情况)。例如,以下查询将用于选择名称数据库中名为 first_name 的列的第一个字母:
SELECT SUBSTRING(first_name,1,1) FROM names;
Run Code Online (Sandbox Code Playgroud)
为什么字符串函数的位置不像几乎所有编程语言的规范那样从 0 开始?
我正在寻找的不仅仅是 ANSI 标准。为什么是标准?
编辑:好的,所以 0 不是“几乎所有编程语言中的规范”,正如下面所指出的。1 也被使用。
我有一个parcels
当前包含列owner_addr1
, owner_addr2
,的表owner_addr3
。有时,后两个字段中的一个或两个字段为空。我想将它们组合成一个新的字段,owner_addr
上面的每个字段//
都在它们之间连接。
但是如果一个或多个原始列是 NULL,我不想连接//
到结果列。因此,举例来说,如果owner_addr1
是123 4th Avenue SE
和owner_addr2
和owner_addr3
的NULL
,然后我想要的结果列只是123 4th Avenue SE
,没有123 4th Avenue SE // //
(如果我只是做了这会发生CONCAT()
与//
空字符串之间......我只是想添加//
非之间的NULL
列,或将其如果只有一个非NULL
列,则完全退出。
有没有一种简单的方法可以在 Postgresql 中进行这种条件连接,它会遗漏空行?或者我应该写一个python脚本来做到这一点?
将字符分隔的字符串拆分为行和列的最佳方法是什么?
这是我的输入字符串:
!1;100;10;200;0;500;2;1000;30!2;100;3;500;1;2000;5
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出表:
Id Value Count
1 100 10
1 200 0
1 500 2
1 1000 30
2 100 3
2 500 1
2 2000 5
Run Code Online (Sandbox Code Playgroud)
此致,