我一直在玩cast()等等,但似乎无法让事情发挥作用.我有一个长度为18个字符的varchar字符串,我想将其转换或转换为十进制,并带有五个小数位.例如,这个字符串:
00000001987600130
将成为19876.00130
在这种情况下,我总是有一个17个字符的字符串,最后五个字符保留为小数位.
我一直在和演员和皈依者一起玩,但我不在那里.例如,这些陈述让我(有点)接近但不完全正确.
select CAST('00000001987600130' as bigint)/100000.0
select (convert(decimal(17,5),left('00000001987600130',12),0))
Run Code Online (Sandbox Code Playgroud)
如果您有任何建议,我很乐意尝试.谢谢!
我想投一个AuctionId这是一个UNIQUEIDENTIFIER到varchar(36),然后回到一个UNIQUEIDENTIFIER.请帮我.
CAST((SUBSTRING(CAST([AuctionId] as VARCHAR(36)), 0, 35) + '1') AS UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误:
消息8169,级别16,状态2,行647从字符串转换为uniqueidentifier时转换失败.
提前致谢
我有一张包含许多记录的表格,并且还在继续增长:
table T_A
{
total varchar2(10),
total number
}
Run Code Online (Sandbox Code Playgroud)
"总"字段由5个数字和1个字符组成,例如"12345p",该字符是"p"或"N".
现在,我想写一个触发器将现有的"total"转换为数字并将它们存储在"total_num"中.此外,如果有插入或更新操作,它可以自动完成此转换,并且必须满足以下条件:
如果字符是"p",则数字为正,例如"12345p"转换为"12345",否则数字为负数.例如,"12345N"转换为"-12345".
如何写这个触发器?
有什么方法可以转换此日期时间 SQL 值:
2011-10-11 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
到格式完全相同的字符串?
'2011-10-11 00:00:00.000'
Run Code Online (Sandbox Code Playgroud)
我尝试这样做,cast(fl_from_dt as varchar(50)但它会将其转换为可读的内容 - 例如。'Oct 11 2011 12:00AM'
问题的简短版本:有没有办法计算VARCHAR(n)在Oracle数据库的列中存储字符串字符所需的字节数?
更长版本:以下Oracle SQL脚本将在第三个语句中失败.它会尝试在一VARCHAR(10)列中插入10个字符; 然而,其中一个角色是带有尖锐口音的A.
CREATE TABLE TESTTABLE (NAME VARCHAR(10) NULL);
INSERT INTO TESTTABLE (NAME) VALUES ('abcdefghij');
--1 rows inserted.
INSERT INTO TESTTABLE (NAME) VALUES ('ábcdefghij');
--ORA-12899: value too large for column "ACME"."TESTTABLE"."NAME" (actual: 11, maximum: 10)
Run Code Online (Sandbox Code Playgroud)
我的C#应用程序将字符串存储在Oracle数据库中,我不能只将列类型更改为NVARCHAR2(10),这将起作用.应用程序应该将任何较大的字符串修剪为10个字符的限制,因此Oracle不会抱怨它的长度.但String.Length基于a- based的修剪是一种非常天真的策略:它会盲目地将"ábcdefghij"保留为其所有10个CLR字符.
如何检测'á'将占用数据库行中的2个字节,以便在发出语句之前将字符串修剪为"ábcdefghi"INSERT?
编辑:这个问题类似于基于字节长度缩短UTF8字符串的最佳方法
我在MySQL DB中有一个列VARCHAR(1000).因此,当PHP请求插入超过1000个符号时,其余文本将被拒绝.
在我放置了一个textareawith 的网站上maxlength=1000,但在服务器端,PHP解析提交的文本与htmlspecialchars函数,所以如果文本是it's called "nothing",它就变成了it's called "nothing".
问题是文本可能会变成超过1000个符号,即使它输入的字符很清楚1000个字符.
你能帮我找到正确的方法,正确的功能等来插入用户输入的所有字符吗?
我有很多表,有数百万行,有MySQL.这些表用于存储日志行.我在VARCHAR(50)中有一个字段"country".此列上有一个索引.它是否会改变在一个国家的INT而不是这个国家领域存储的性能?
谢谢 !
我目前正在开展一个项目,要求我在献血之前存储记录的血红蛋白水平以及血压......就像'190/80'.我应该把它作为一个字符串存储在Varchar中两个单独的值,例如收缩压(INT)190,舒张压(INT)80?反馈意见
Char并且varchar是SQL中的数据类型,因为它们在许多其他语言中(所以这个问题可能是多语言).
从我的理解,不同的是,如果我宣布Char因为Char(20)它会分配20(字节/位)有人能澄清这一点呢?现在,我将使用字节.].然后,如果我只使用16个字节,我仍然会有四个分配给该字段.(浪费4个字节的内存.)
但是,如果我声明一个varcharas varchar(20)并且只使用了16个字节,那么它只会分配16个字节.
当然这更好吗?为什么有人会选择char?它是遗留的原因,还是我缺少的东西?
我有一个名为'MatchType'的表,它包含:
ID | MatchTypeName
1 | One Day
2 | Two Day
3 | T20
Run Code Online (Sandbox Code Playgroud)
我有一个方法来根据与下列值匹配的sting从该表中检索记录MatchTypeName:
public static int GetByName(string matchType)
{
MatchType item = new MatchType();
using (SqlConnection con = new SqlConnection(BaseDataAccessLayer.GetConnectionStringByName()))
{
using (SqlCommand cmd = new SqlCommand(STORED_PROC_GetByName, con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@matchTypeName", SqlDbType.VarChar, 20).Value = matchType;
con.Open();
using (IDataReader reader = cmd.ExecuteReader())
{
item.LoadFromReader(reader);
}
}
}
return item.Id;
}
Run Code Online (Sandbox Code Playgroud)
此方法调用此存储过程:
CREATE PROCEDURE [dbo].[MatchType_GetByName]
(@matchTypeName varchar(20))
AS
BEGIN
SET NOCOUNT ON
SELECT
[Id], [MatchTypeName] …Run Code Online (Sandbox Code Playgroud)