我想将SQL查询转换为TableQuery
:
SELECT ..., TRIM(LEADING '0' FROM mycolumn) FROM mytable WHERE TRIM(LEADING'0' FROM mycolumn) = '$key
应该成为 MyTableQuery.filter(<_.mycolumn something something> )
我无法使用,implicitMappedColumnType
因为我正在映射至String
,String
并且String
结果中还有其他列。我不知道我会怎么使用它都SELECT
和WHERE
对于SELECT
零件,我创建了一个自定义函数,用于将结果元组映射到我的case类,因此我只需要一个WHERE
零件解决方案。
已经从文档中阅读了来自SQL的介绍和用户定义的功能,但是不幸的是,我没有一个明智的选择。我想我可以用一个,SimpleFunction.unary[String,String]
但还没有弄清楚怎么做。
我会修剪经常String
用dropLeft
,但是Rep[String]
没有这样的方法。ltrim
不接受参数。endsWith
就我而言是模棱两可的。
我无法填充查询String
,因为并非数据库中的所有值都被填充并且具有不同的长度。
我绝对可以使用简单的SQL并映射结果,但是我真的很想了解我在这里缺少的内容。
我正在使用Slick 3.1.1
TRIM(LEADING)的语法有点奇怪,这意味着您必须使用SimpleExpression并使用QueryBuilder来访问。
val trimLeading = SimpleExpression.binary[String, String, String] {
(trimChar, str, queryBuilder) =>
import slick.util.MacroSupport._
import queryBuilder._
b"TRIM(LEADING $trimChar FROM $str)"
}
这是一个练习它的例子
import com.typesafe.config.ConfigFactory
import slick.backend.DatabaseConfig
import slick.driver.JdbcProfile
import scala.concurrent.duration.Duration
import scala.concurrent.Await
object TrimLeading extends App {
def trimLeadingExample(dbConfig: DatabaseConfig[JdbcProfile]): Unit = {
import dbConfig.driver.api._
val trimLeading = SimpleExpression.binary[String, String, String] {
(trimChar, str, queryBuilder) =>
import slick.util.MacroSupport._
import queryBuilder._
b"TRIM(LEADING $trimChar FROM $str)"
}
class ZeroTable(tag: Tag) extends Table[String](tag, "ZeroTable") {
def zeros = column[String]("zeros")
def * = zeros
}
val zeroTable = TableQuery[ZeroTable]
exec(zeroTable.schema.create)
exec(zeroTable ++= Seq("000000x", "00x", "000000000x", "00000x", "00xx"))
exec(zeroTable.
filter(s => trimLeading("0", s.zeros) === "x").
map(s => trimLeading("0", s.zeros)).result).foreach(println)
exec(zeroTable.schema.drop)
def exec[T](action: DBIO[T]): T = Await.result(dbConfig.db.run(action), Duration.Inf)
}
val configStr =
"""
| driver = "freeslick.OracleProfile$"
| db {
| driver = oracle.jdbc.OracleDriver
| url="jdbc:oracle:thin:@//localhost:49161/xe"
| properties = {
| databaseName = "freeslicktest"
| user = "system"
| password = "oracle"
| }
| }
""".stripMargin
trimLeadingExample(DatabaseConfig.forConfig[JdbcProfile]("", ConfigFactory.parseString(configStr)))
}
从日志中,该语句是
*** (s.jdbc.JdbcBackend.statement) Preparing statement: select TRIM(LEADING'0' FROM "zeros") from "ZeroTable" where TRIM(LEADING '0' FROM "zeros") = 'x'
问题内容: 我试图在我的一个JavaScript程序中应用一个字符串。在Mozilla下它可以正常工作,但是当我在IE8中尝试时会显示错误。有人知道这是怎么回事吗?无论如何,我可以使其在IE中工作吗? 码: 错误显示: 问题答案: 添加以下代码以向字符串添加修剪功能。
问题内容: 我早些时候问了一个问题,但遭到了严厉的批评,因此在这里我再次提出。比较简单,改写为吸引那些可能一直担心我之前提出的问题的人。 背景信息我正在解析一些HTML信息。我将所有内容隔离在一系列的行中,但我希望抓取的内容以及其后的空格。为了摆脱空间,我选择使用trim(),但是遇到了麻烦。我的代码的最后几行是测试: 结果是: 我担心我调用trim()的方式可能有问题,因为我们都会不时出错,所以
我正在尝试在postgress列中插入json,这是json 但是在光滑的一代中,它产生了如下的结果: val taskvariables:rep[option[String]]=column[option[String]](“taskvariables”,o.length(2147483647,varying=false),o.default(None)) 为了插入它,我编写了如下代码: 它在插
问题内容: 有没有办法观察将由生成的SQL语句? 例如,我有这个:是否 可以查看其基础的原始SQL? 问题答案: 光滑2.X: 您可以按照Slick文档中所示打印查询语句: 对于其他类型的报表看,和。 光滑的3.X: 文件。
Trim函数删除给定输入字符串的前导和尾随空格。 语法 (Syntax) Trim(String) 例子 (Example) 添加按钮并添加以下功能。 Private Sub Constant_demo_Click() var = "Microsoft VBScript" var = " Microsoft VBScript "
从字符串的两端删除空格。 语法 (Syntax) 以下是语法。 (trim str) Parameters - 'str'是输入字符串。 Return Value - 删除了空格的字符串。 例子 (Example) 以下是Clojure中的修剪示例。 (ns clojure.examples.hello (:gen-class)) (defn hello-world [] (prin