对于想了解在SQLSelect中将列转换为字符串的读者,本文将提供新的信息,我们将详细介绍sql列转换为行,并且为您提供关于arrays–在postgresql中将列从字符串更改为字符串数组、sele
对于想了解在SQL Select中将列转换为字符串的读者,本文将提供新的信息,我们将详细介绍sql列转换为行,并且为您提供关于arrays – 在postgresql中将列从字符串更改为字符串数组、select 语句直接把列转换为字符串、SQL Server:舍入十进制数并转换为int(在Select中)、SQL 行列转换数据转换为字符串的有价值信息。
本文目录一览:- 在SQL Select中将列转换为字符串(sql列转换为行)
- arrays – 在postgresql中将列从字符串更改为字符串数组
- select 语句直接把列转换为字符串
- SQL Server:舍入十进制数并转换为int(在Select中)
- SQL 行列转换数据转换为字符串
在SQL Select中将列转换为字符串(sql列转换为行)
我想将一列转换为字符串,其中该列是一个选择语句,然后与另一列连接。这是我在使用CONVERT或CAST时感到困惑的地方。
例子:
SELECT employeeID,name,location,(SELECT COUNT(DISTINCT loginsFailed)
FROM users
WHERE (users.employeedID = userDetails.employeeID)
AND (users.startdate = 01-01-2013) as LoginCountFailed,(SELECT COUNT(DISTINCT logins)
FROM users
WHERE (users.employeedID = userDetails.employeeID)
AND (users.startdate = 01-01-2013) as LoginCount
FROM userDetails
现在,此查询非常完美,因为它提供了正确的登录次数,但失败为整数。但是,我想将这些整数用作字符串,因此我可以使用一列。有一个原因为什么它需要作为字符串的一列。
我只想有4列,而不是5列。我想拥有的登录列是loginCountFailed /
LoginCount。例如:3/12。我需要将其作为字符串,因为您无法将其除以0,并且有时分母为0。
arrays – 在postgresql中将列从字符串更改为字符串数组
Column | Type | Modifiers --------------------+-----------------------------+--------------------------------- id | uuid | not null name | character varying(255) | products | character varying | default '{}'::character varying
如何将products列更改为“character varying []”,并将相应的修饰符更改为默认的“{}”:: character varying []?本质上,我想将字符串转换为字符串数组.请注意,products列对字符数没有限制.
alter table "containers" alter "products" type character varying[];
抛出以下错误
ERROR: column “products” cannot be cast to type character varying[]
您必须指明如何执行类型转换.
您应该在USING表达式子句中执行此操作(请参阅文档中的 ALTER TABLE).
在这种情况下,您必须删除并重新创建列的默认值,如文档中所述:
The USING option of SET DATA TYPE can actually specify any expression involving the old values of the row; that is,it can refer to other columns as well as the one being converted. This allows very general conversions to be done with the SET DATA TYPE Syntax. Because of this flexibility,the USING expression is not applied to the column’s default value (if any); the result might not be a constant expression as required for a default. This means that when there is no implicit or assignment cast from old to new type,SET DATA TYPE might fail to convert the default even though a USING clause is supplied. In such cases,drop the default with DROP DEFAULT,perform the ALTER TYPE,and then use SET DEFAULT to add a suitable new default.
alter table containers alter products drop default; alter table containers alter products type text[] using array[products]; alter table containers alter products set default '{}';
这三个操作可以在一个语句中完成:
alter table containers alter products drop default,alter products type text[] using array[products],alter products set default '{}';
select 语句直接把列转换为字符串
SQL Server 2017+
SELECT @a = STRING_AGG([msg], '''') WITHIN GROUP (ORDER BY [priority] ASC)
FROM bla
where autofix = 0
SQL Server 2005+
SELECT @a = (SELECT [msg] + ''''
FROM bla
WHERE autofix = 0
ORDER BY [priority] ASC
FOR XML PATH(''''), TYPE).value(''.'', ''nvarchar(max)'')
https://stackoverflow.com/questions/15138593/nvarchar-concatenation-index-nvarcharmax-inexplicable-behavior/15163136#15163136
https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15
SQL Server:舍入十进制数并转换为int(在Select中)
例如33.33333.
如何在Select中对此进行舍入并转换为整数,以便我没有小数,例如在上面的例子中它应该返回33?
100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END) AS matchPercent
蒂姆,非常感谢你提供的任何帮助.
解决方法
ROUND(INT,100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END),0) AS matchPercent
这将保留类型,例如圆形浮子将保持浮动.如果还需要返回int数据类型(或其他整数数据类型),还需要转换它:
CONVERT(INT,ROUND(INT,0)) AS matchPercent
SQL 行列转换数据转换为字符串
行列转换,将列数据转换为字符串输出
DECLARE @center_JZHW VARCHAR(500)
SET @center_JZHW = ( SELECT DISTINCT STUFF(
( SELECT '','' + ce_code FROM ap_center WITH ( NOLOCK )
WHERE CE_PROVINCE = ''浙江省'' ORDER BY ce_code
FOR XML PATH('''')), 1, 1, '''') AS jzhw
FROM ap_center t)
SELECT @center_JZHW
Function写法
DECLARE @ret VARCHAR(200)
SET @ret = ''''
SELECT @ret = @ret + ''|'' + RTRIM(RT_GSX_COMPTIA_CODE)
FROM dbo.AP_REQUEST_RETURN_PART
WHERE rt_so_no = @so_no
SET @ret = CASE WHEN LEN(@ret) > 0 THEN STUFF(@ret, 1, 1, '''')
ELSE @ret
END
RETURN @ret
多列作为字段输出:
SELECT DISTINCT STUFF(
( SELECT '','' + rt_loan_part FROM dbo.AP_REQUEST_RETURN_PART WHERE rt_so_no=''IPTH14060001''
FOR XML PATH('''')), 1, 1, '''') AS part
,STUFF(
( SELECT '','' + RT_GSX_COMPTIA_CODE FROM dbo.AP_REQUEST_RETURN_PART WHERE rt_so_no=''IPTH14060001''
FOR XML PATH('''')), 1, 1, '''') AS COMPTIA_CODE
FROM AP_REQUEST_RETURN_PART t
关于在SQL Select中将列转换为字符串和sql列转换为行的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于arrays – 在postgresql中将列从字符串更改为字符串数组、select 语句直接把列转换为字符串、SQL Server:舍入十进制数并转换为int(在Select中)、SQL 行列转换数据转换为字符串的相关信息,请在本站寻找。
本文标签: